Program: 120543
Project: 120543
Buggy source:
public Object[] getChildren(Object parentElement){
  List values=new ArrayList();
  if (parentElement instanceof Message) {
    Message messParent=(Message)parentElement;
    String[] childNames=messParent.getNames();
    if (!values.isEmpty()) {
      values.clear();
    }
    for (int i=0; i < childNames.length; i++) {
      try {
        Structure[] childReps=messParent.getAll(childNames[i]);
        for (int j=0; j < childReps.length; j++) {
          if (childReps[j] instanceof Message) {
            values.add(childReps[j]);
          }
          if (childReps[j] instanceof Group) {
            allSegmentFromGroup.clear();
            getAllSegmentsFromGroup((Group)childReps[j]);
            if (allSegmentFromGroup.size() > 0) {
              values.addAll(Arrays.asList(allSegmentFromGroup.toArray(new SegmentModel[0])));
            }
          }
          if (childReps[j] instanceof Segment) {
            SegmentModel sModel=new SegmentModel((Segment)childReps[j],messParent,i,j);
            if (sModel.getTypes() != null && sModel.getTypes().length > 0) {
              values.add(sModel);
              if (!allSegmentsForMessage.contains(sModel)) {
                allSegmentsForMessage.add(sModel);
              }
            }
          }
        }
      }
 catch (      HL7Exception e) {
        e.printStackTrace();
      }
    }
    return values.toArray();
  }
  if (parentElement instanceof Segment) {
    values.clear();
    Segment segment=(Segment)parentElement;
    SegmentModel sm=new SegmentModel(segment,segment,0,0);
    return sm.getTypes();
  }
  if (parentElement instanceof SegmentModel) {
    SegmentModel sm=(SegmentModel)parentElement;
    return sm.getTypes();
  }
  if (parentElement instanceof TypeModel) {
    TypeModel tm=(TypeModel)parentElement;
    return tm.getPrimitives();
  }
  if (parentElement instanceof Group) {
    values.clear();
    Group group=(Group)parentElement;
    String[] childNames=group.getNames();
    for (int i=0; i < childNames.length; i++) {
      try {
        Structure[] childReps=group.getAll(childNames[i]);
        for (int j=0; j < childReps.length; j++) {
          if (childReps[j] instanceof Segment) {
            SegmentModel sm=new SegmentModel((Segment)childReps[j],group,i,j);
            if (sm.getTypes() != null && sm.getTypes().length > 0) {
              values.add(sm);
            }
          }
 else {
            values.add(childReps[j]);
          }
        }
      }
 catch (      HL7Exception e) {
        e.printStackTrace();
      }
    }
    return values.toArray();
  }
  return new Object[0];
}

Fixed version (ground truth):
public Object[] getChildren(Object parentElement){
  List values=new ArrayList();
  if (parentElement instanceof Message) {
    Message messParent=(Message)parentElement;
    String[] childNames=messParent.getNames();
    if (!values.isEmpty()) {
      values.clear();
    }
    for (int i=0; i < childNames.length; i++) {
      try {
        Structure[] childReps=messParent.getAll(childNames[i]);
        for (int j=0; j < childReps.length; j++) {
          if (childReps[j] instanceof Message) {
            values.add(childReps[j]);
          }
          if (childReps[j] instanceof Group) {
            values.add(childReps[j]);
            allSegmentFromGroup.clear();
            getAllSegmentsFromGroup((Group)childReps[j]);
          }
          if (childReps[j] instanceof Segment) {
            SegmentModel sModel=new SegmentModel((Segment)childReps[j],messParent,i,j);
            if (sModel.getTypes() != null && sModel.getTypes().length > 0) {
              values.add(sModel);
              if (!allSegmentsForMessage.contains(sModel)) {
                allSegmentsForMessage.add(sModel);
              }
            }
          }
        }
      }
 catch (      HL7Exception e) {
        e.printStackTrace();
      }
    }
    return values.toArray();
  }
  if (parentElement instanceof Segment) {
    values.clear();
    Segment segment=(Segment)parentElement;
    SegmentModel sm=new SegmentModel(segment,segment,0,0);
    return sm.getTypes();
  }
  if (parentElement instanceof SegmentModel) {
    SegmentModel sm=(SegmentModel)parentElement;
    return sm.getTypes();
  }
  if (parentElement instanceof TypeModel) {
    TypeModel tm=(TypeModel)parentElement;
    return tm.getPrimitives();
  }
  if (parentElement instanceof Group) {
    values.clear();
    Group group=(Group)parentElement;
    String[] childNames=group.getNames();
    for (int i=0; i < childNames.length; i++) {
      try {
        Structure[] childReps=group.getAll(childNames[i]);
        for (int j=0; j < childReps.length; j++) {
          if (childReps[j] instanceof Segment) {
            SegmentModel sm=new SegmentModel((Segment)childReps[j],group,i,j);
            if (sm.getTypes() != null && sm.getTypes().length > 0) {
              values.add(sm);
            }
          }
 else {
            values.add(childReps[j]);
          }
        }
      }
 catch (      HL7Exception e) {
        e.printStackTrace();
      }
    }
    return values.toArray();
  }
  return new Object[0];
}