bufr/src/main/java/ucar/nc2/iosp/bufr/DataDescriptorTreeConstructor.java
private void flatten(List<DataDescriptor> result, List<DataDescriptor> tree) {

    for (DataDescriptor key : tree) {
      if (key.bad) {
        root.isBad = true;
        result.add(key); // add it anyway so we can see it in debug
        continue;
      }

      if ((key.f == 3) && (key.subKeys != null)) {
        flatten(result, key.subKeys);

      } else if (key.f == 1) { // flatten the subtrees
        List<DataDescriptor> subTree = new ArrayList<DataDescriptor>();
        flatten(subTree, key.subKeys);
        key.subKeys = subTree;
        result.add(key);

      } else {
        result.add(key);
      }
    }
  }
private void flatten(List<DataDescriptor> result, List<DataDescriptor> tree) {

    for (DataDescriptor key : tree) {
      if (key.bad) {
        root.isBad = true;
        result.add(key); // add it anyway so we can see it in debug
        continue;
      }

      if ((key.f == 3) && (key.subKeys != null)) {
        flatten(result, key.subKeys);

      } else if (key.f == 1) { // flatten the subtrees
        List<DataDescriptor> subTree = new ArrayList<DataDescriptor>();
        flatten(subTree, key.subKeys);
        key.subKeys = subTree;
        result.add(key);

      } else {
        result.add(key);
      }
    }
  }
private void flatten ( List < DataDescriptor > result , List < DataDescriptor > tree ) { for ( DataDescriptor key : tree ) { if ( key . bad ) { root . isBad = true ; result . add ( key ) ; // add it anyway so we can see it in debug
 continue ; } if ( ( key . f == 3 ) && ( key . subKeys != null ) ) { flatten ( result , key . subKeys ) ; } else if ( key . f == 1 ) { // flatten the subtrees
 List < DataDescriptor > subTree = new ArrayList < DataDescriptor > ( ) ; flatten ( subTree , key . subKeys ) ; key . subKeys = subTree ; result . add ( key ) ; } else { result . add ( key ) ; } } }
flatten the compounds (type 3); but dont remove bad ones
flatten the compounds ( type 3 ) ; but dont remove bad ones