Program: 16878
Project: 16878
Buggy source:
/** 
 * @param args
 */
public static void main(String[] args) throws Exception {
  String pdbCode="String_Node_Str";
  AtomCache cache=new AtomCache();
  cache.setUseMmCif(true);
  StructureIO.setAtomCache(cache);
  Structure structure=StructureIO.getStructure(pdbCode);
  System.out.println(structure.getPDBCode());
  SpaceGroup sg=structure.getCrystallographicInfo().getSpaceGroup();
  if (sg != null) {
    System.out.println(sg.getShortSymbol() + "String_Node_Str" + sg.getId()+ "String_Node_Str");
    System.out.println("String_Node_Str" + sg.getNumOperators());
  }
  System.out.println("String_Node_Str" + NTHREADS + "String_Node_Str");
  long start=System.currentTimeMillis();
  CrystalBuilder cb=new CrystalBuilder(structure);
  StructureInterfaceList interfaces=cb.getUniqueInterfaces(CUTOFF);
  interfaces.calcAsas(N_SPHERE_POINTS,NTHREADS,CONSIDER_COFACTORS);
  interfaces.removeInterfacesBelowArea(MIN_AREA_TO_KEEP);
  List<StructureInterfaceCluster> clusters=interfaces.getClusters();
  long end=System.currentTimeMillis();
  long total=(end - start) / 1000;
  System.out.println("String_Node_Str" + total + "String_Node_Str");
  System.out.println("String_Node_Str" + interfaces.size());
  for (int i=0; i < interfaces.size(); i++) {
    StructureInterface interf=interfaces.get(i + 1);
    String infiniteStr="String_Node_Str";
    if (interf.isInfinite())     infiniteStr="String_Node_Str";
    System.out.println("String_Node_Str" + (i + 1) + "String_Node_Str"+ interf.getCrystalIds().getFirst()+ "String_Node_Str"+ interf.getCrystalIds().getSecond()+ infiniteStr);
    List<AtomContact> clashing=interf.getContacts().getContactsWithinDistance(CLASH_DISTANCE);
    if (clashing.size() > 10)     System.out.println(clashing.size() + "String_Node_Str");
    CrystalTransform transf1=interf.getTransforms().getFirst();
    CrystalTransform transf2=interf.getTransforms().getSecond();
    System.out.println("String_Node_Str" + SpaceGroup.getAlgebraicFromMatrix(transf1.getMatTransform()) + "String_Node_Str"+ SpaceGroup.getAlgebraicFromMatrix(transf2.getMatTransform()));
    int foldType=sg.getAxisFoldType(transf2.getTransformId());
    AxisAngle4d axisAngle=sg.getRotAxisAngle(transf2.getTransformId());
    String screwStr="String_Node_Str";
    if (transf2.getTransformType().isScrew()) {
      Vector3d screwTransl=transf2.getTranslScrewComponent();
      screwStr="String_Node_Str" + transf2.getTransformType().getShortName() + "String_Node_Str"+ String.format("String_Node_Str",screwTransl.x,screwTransl.y,screwTransl.z);
    }
    System.out.println("String_Node_Str" + foldType + "String_Node_Str"+ String.format("String_Node_Str",axisAngle.x,axisAngle.y,axisAngle.z)+ screwStr);
    System.out.println("String_Node_Str" + interf.getContacts().size());
    Pair<List<Group>> cores=interf.getCoreResidues(BSATOASA_CUTOFF,MIN_ASA_FOR_SURFACE);
    System.out.println("String_Node_Str" + String.format("String_Node_Str",BSATOASA_CUTOFF) + "String_Node_Str"+ cores.getFirst().size()+ "String_Node_Str"+ cores.getSecond().size());
    System.out.printf("String_Node_Str",interf.getTotalArea());
  }
  System.out.println("String_Node_Str");
  for (  StructureInterfaceCluster cluster : clusters) {
    for (    StructureInterface member : cluster.getMembers()) {
      System.out.print(member.getId() + "String_Node_Str");
    }
    System.out.println();
  }
}

Fixed version (ground truth):
/** 
 * @param args
 */
public static void main(String[] args) throws Exception {
  String pdbCode="String_Node_Str";
  AtomCache cache=new AtomCache();
  cache.setUseMmCif(true);
  StructureIO.setAtomCache(cache);
  Structure structure=StructureIO.getStructure(pdbCode);
  System.out.println(structure.getPDBCode());
  SpaceGroup sg=structure.getCrystallographicInfo().getSpaceGroup();
  if (sg != null) {
    System.out.println(sg.getShortSymbol() + "String_Node_Str" + sg.getId()+ "String_Node_Str");
    System.out.println("String_Node_Str" + sg.getNumOperators());
  }
  System.out.println("String_Node_Str" + NTHREADS + "String_Node_Str");
  long start=System.currentTimeMillis();
  CrystalBuilder cb=new CrystalBuilder(structure);
  StructureInterfaceList interfaces=cb.getUniqueInterfaces(CUTOFF);
  interfaces.calcAsas(N_SPHERE_POINTS,NTHREADS,CONSIDER_COFACTORS);
  interfaces.removeInterfacesBelowArea(MIN_AREA_TO_KEEP);
  List<StructureInterfaceCluster> clusters=interfaces.getClusters();
  long end=System.currentTimeMillis();
  long total=(end - start) / 1000;
  System.out.println("String_Node_Str" + total + "String_Node_Str");
  System.out.println("String_Node_Str" + interfaces.size());
  for (int i=0; i < interfaces.size(); i++) {
    StructureInterface interf=interfaces.get(i + 1);
    String infiniteStr="String_Node_Str";
    if (interf.isInfinite())     infiniteStr="String_Node_Str";
    System.out.println("String_Node_Str" + (i + 1) + "String_Node_Str"+ interf.getCrystalIds().getFirst()+ "String_Node_Str"+ interf.getCrystalIds().getSecond()+ infiniteStr);
    List<AtomContact> clashing=interf.getContacts().getContactsWithinDistance(CLASH_DISTANCE);
    if (clashing.size() > 10)     System.out.println(clashing.size() + "String_Node_Str");
    CrystalTransform transf1=interf.getTransforms().getFirst();
    CrystalTransform transf2=interf.getTransforms().getSecond();
    System.out.println("String_Node_Str" + SpaceGroup.getAlgebraicFromMatrix(transf1.getMatTransform()) + "String_Node_Str"+ SpaceGroup.getAlgebraicFromMatrix(transf2.getMatTransform()));
    String screwStr="String_Node_Str";
    if (transf2.getTransformType().isScrew()) {
      Vector3d screwTransl=transf2.getTranslScrewComponent();
      screwStr="String_Node_Str" + transf2.getTransformType().getShortName() + "String_Node_Str"+ String.format("String_Node_Str",screwTransl.x,screwTransl.y,screwTransl.z);
    }
    if (structure.isCrystallographic()) {
      int foldType=sg.getAxisFoldType(transf2.getTransformId());
      AxisAngle4d axisAngle=sg.getRotAxisAngle(transf2.getTransformId());
      System.out.println("String_Node_Str" + foldType + "String_Node_Str"+ String.format("String_Node_Str",axisAngle.x,axisAngle.y,axisAngle.z)+ screwStr);
    }
    System.out.println("String_Node_Str" + interf.getContacts().size());
    Pair<List<Group>> cores=interf.getCoreResidues(BSATOASA_CUTOFF,MIN_ASA_FOR_SURFACE);
    System.out.println("String_Node_Str" + String.format("String_Node_Str",BSATOASA_CUTOFF) + "String_Node_Str"+ cores.getFirst().size()+ "String_Node_Str"+ cores.getSecond().size());
    System.out.printf("String_Node_Str",interf.getTotalArea());
  }
  System.out.println("String_Node_Str");
  for (  StructureInterfaceCluster cluster : clusters) {
    for (    StructureInterface member : cluster.getMembers()) {
      System.out.print(member.getId() + "String_Node_Str");
    }
    System.out.println();
  }
}