Program: 91173
Project: 91173
Buggy source:
private SymbolType clone(final String name,final int arrayCount,final String typeVariable,Stack<SymbolType> parent,Stack<SymbolType> created){
  SymbolType result=new SymbolType(name);
  result.setClazz(clazz);
  result.setArrayCount(arrayCount);
  result.setField(field);
  result.setMethod(method);
  result.typeVariable=typeVariable;
  if (parent == null) {
    parent=new Stack<>();
    created=new Stack<>();
  }
  Iterator<SymbolType> it=parent.iterator();
  Iterator<SymbolType> it2=created.iterator();
  boolean found=false;
  while (it.hasNext() && !found) {
    SymbolType next=it.next();
    SymbolType created2=it2.next();
    if (next == this) {
      result=created2;
      found=true;
    }
  }
  if (!found) {
    parent.push(this);
    created.push(result);
    if (parameterizedTypes != null) {
      List<SymbolType> list=new LinkedList<>();
      for (      SymbolData type : parameterizedTypes) {
        list.add(((SymbolType)type).clone(parent,created));
      }
      result.setParameterizedTypes(list);
    }
 else {
      result.setParameterizedTypes(null);
    }
    if (upperBounds != null) {
      List<SymbolType> list=new LinkedList<>();
      for (      SymbolData type : upperBounds) {
        list.add(((SymbolType)type).clone(parent,created));
      }
      result.upperBounds=list;
    }
    if (lowerBounds != null) {
      List<SymbolType> list=new LinkedList<>();
      for (      SymbolData type : lowerBounds) {
        list.add(((SymbolType)type).clone(parent,created));
      }
      result.lowerBounds=list;
    }
    parent.pop();
    created.pop();
  }
  return result;
}

Fixed version (ground truth):
private SymbolType clone(final Marker marker,final String name,final int arrayCount,final String typeVariable,Stack<SymbolType> parent,Stack<SymbolType> created){
  SymbolType result=new SymbolType(marker,name);
  result.setClazz(clazz);
  result.setArrayCount(arrayCount);
  result.setField(field);
  result.setMethod(method);
  result.typeVariable=typeVariable;
  if (parent == null) {
    parent=new Stack<>();
    created=new Stack<>();
  }
  Iterator<SymbolType> it=parent.iterator();
  Iterator<SymbolType> it2=created.iterator();
  boolean found=false;
  while (it.hasNext() && !found) {
    SymbolType next=it.next();
    SymbolType created2=it2.next();
    if (next == this) {
      result=created2;
      found=true;
    }
  }
  if (!found) {
    parent.push(this);
    created.push(result);
    if (parameterizedTypes != null) {
      List<SymbolType> list=new LinkedList<>();
      for (      SymbolData type : parameterizedTypes) {
        list.add(((SymbolType)type).clone(parent,created));
      }
      result.setParameterizedTypes(list);
    }
 else {
      result.setParameterizedTypes(null);
    }
    if (upperBounds != null) {
      List<SymbolType> list=new LinkedList<>();
      for (      SymbolData type : upperBounds) {
        list.add(((SymbolType)type).clone(parent,created));
      }
      result.upperBounds=list;
    }
    if (lowerBounds != null) {
      List<SymbolType> list=new LinkedList<>();
      for (      SymbolData type : lowerBounds) {
        list.add(((SymbolType)type).clone(parent,created));
      }
      result.lowerBounds=list;
    }
    parent.pop();
    created.pop();
  }
  return result;
}