code: public void visitComplexType(CobolComplexType type,
              ComplexTypeChildHandler callback) {
  
          cobolNamesStack.push(type.getCobolName());
          int index = 0;
          for (Entry < String, CobolType > child : type.getFields().entrySet()) {
              CobolType childType = child.getValue();
              String childName = child.getKey();
              curFieldName = childName;
              if (childType instanceof CobolOptionalType
                      && !isPresent((CobolOptionalType) childType)) {
                  index++;
                  continue;
              }
              if (!callback.preVisit(childName, index, childType)) {
                  break;
              }
  
              childType.accept(this);
  
              if (!callback.postVisit(childName, index, childType)) {
                  break;
              }
              index++;
          }
          cobolNamesStack.pop();
      }
docs: Visit a complex type which visits each of its children in turn.
  <p/>
  Optional children may be skipped.
  
  @param type the complex type to visit
  @param callback a function that is invoked for each child in turn after
  it has been visited