Program: 54291
Project: 54291
Buggy source:
private void createSampleProgram(){
  program=new JProgram();
  typeOracle=program.typeOracle;
  synthSource=program.createSourceInfoSynthetic(JjsTypeTest.class,"String_Node_Str");
  classObject=createClass("String_Node_Str",null,false,false);
  classString=createClass("String_Node_Str",classObject,false,true);
  classJso=createClass("String_Node_Str",classObject,false,false);
  intfIBase=createInterface("String_Node_Str");
  intfI=createInterface("String_Node_Str");
  intfI.addImplements(intfIBase);
  intfJ=createInterface("String_Node_Str");
  classBase=createClass("String_Node_Str",classObject,false,false);
  classA=createClass("String_Node_Str",classBase,false,false);
  classB=createClass("String_Node_Str",classBase,false,false);
  classB.addImplements(intfI);
  classC=createClass("String_Node_Str",classObject,false,false);
  classC.addImplements(intfI);
  classBSub=createClass("String_Node_Str",classB,false,false);
  classJso1=createClass("String_Node_Str",classJso,false,false);
  classJso2=createClass("String_Node_Str",classJso,false,false);
  program.typeOracle.computeBeforeAST();
  typeNull=program.getTypeNull();
  classBnn=program.getNonNullType(classB);
  classBaseNn=program.getNonNullType(classBase);
  arrayOfA=program.getTypeArray(classA,1);
  arrayOfB=program.getTypeArray(classB,1);
  arrayOfBSub=program.getTypeArray(classBSub,1);
  arrayOfC=program.getTypeArray(classC,1);
  arrayOfObject=program.getTypeArray(classObject,1);
  arrayOfInt=program.getTypeArray(program.getTypePrimitiveInt(),1);
  arrayOfArrayOfInt=program.getTypeArray(program.getTypePrimitiveInt(),2);
  arrayOfArrayOfB=program.getTypeArray(classB,2);
}

Fixed version (ground truth):
private void createSampleProgram(){
  program=new JProgram();
  typeOracle=program.typeOracle;
  synthSource=program.createSourceInfoSynthetic(JjsTypeTest.class,"String_Node_Str");
  classObject=createClass("String_Node_Str",null,false,false);
  classString=createClass("String_Node_Str",classObject,false,true);
  classJso=createClass("String_Node_Str",classObject,false,false);
  intfSerializable=createInterface("String_Node_Str");
  intfCloneable=createInterface("String_Node_Str");
  intfIBase=createInterface("String_Node_Str");
  intfI=createInterface("String_Node_Str");
  intfI.addImplements(intfIBase);
  intfJ=createInterface("String_Node_Str");
  classBase=createClass("String_Node_Str",classObject,false,false);
  classA=createClass("String_Node_Str",classBase,false,false);
  classB=createClass("String_Node_Str",classBase,false,false);
  classB.addImplements(intfI);
  classC=createClass("String_Node_Str",classObject,false,false);
  classC.addImplements(intfI);
  classBSub=createClass("String_Node_Str",classB,false,false);
  classJso1=createClass("String_Node_Str",classJso,false,false);
  classJso2=createClass("String_Node_Str",classJso,false,false);
  program.typeOracle.computeBeforeAST();
  typeNull=program.getTypeNull();
  classBnn=program.getNonNullType(classB);
  classBaseNn=program.getNonNullType(classBase);
  arrayOfA=program.getTypeArray(classA,1);
  arrayOfB=program.getTypeArray(classB,1);
  arrayOfBSub=program.getTypeArray(classBSub,1);
  arrayOfC=program.getTypeArray(classC,1);
  arrayOfObject=program.getTypeArray(classObject,1);
  arrayOfInt=program.getTypeArray(program.getTypePrimitiveInt(),1);
  arrayOfArrayOfInt=program.getTypeArray(program.getTypePrimitiveInt(),2);
  arrayOfArrayOfB=program.getTypeArray(classB,2);
}