visad/src/main/java/ucar/nc2/iosp/gempak/GempakSoundingFileReader.java
private List<String> SN_CKUA() {
    List<String> types = new ArrayList<>();
    boolean above = false;
    boolean done = false;
    String partToCheck;
    while (!done) {
      // check for mandatory groups
      for (int group = 0; group < belowGroups.length; group++) {
        if (above) {
          partToCheck = aboveGroups[group];
        } else {
          partToCheck = belowGroups[group];
        }
        if (checkForValidGroup(partToCheck, parmLists[group])) {
          types.add(partToCheck);
        }
      }
      if (!above) {
        above = true;
      } else {
        done = true;
      }
    }
    return types;
  }
private List<String> SN_CKUA() {
    List<String> types = new ArrayList<>();
    boolean above = false;
    boolean done = false;
    String partToCheck;
    while (!done) {
      // check for mandatory groups
      for (int group = 0; group < belowGroups.length; group++) {
        if (above) {
          partToCheck = aboveGroups[group];
        } else {
          partToCheck = belowGroups[group];
        }
        if (checkForValidGroup(partToCheck, parmLists[group])) {
          types.add(partToCheck);
        }
      }
      if (!above) {
        above = true;
      } else {
        done = true;
      }
    }
    return types;
  }
This subroutine checks the parts in a sounding data set for the
unmerged data types.

@return list of part names