Program: 76030
Project: 76030
Buggy source:
public Object visitClassDeclNode(ClassDeclNode node,LinkedList args){
  Object classDeclObj=args.get(0);
  if (classDeclObj instanceof ClassDecl) {
    ClassDecl classDecl=(ClassDecl)classDeclObj;
    if (classDecl.category == CG_INTERFACE) {
      int classPublic=classDecl.getModifiers() & PUBLIC_MOD;
      int modifiers=node.getModifiers();
      modifiers|=(classPublic | STATIC_MOD | FINAL_MOD);
      node.setModifiers(modifiers);
    }
  }
  ClassDecl me=(ClassDecl)JavaDecl.getDecl((NamedNode)node);
  if (!me.addVisitor(_myClass)) {
    return null;
  }
  TreeNode superClass=node.getSuperClass();
  ClassDecl superDecl;
  if (me == StaticResolution.OBJECT_DECL) {
    superDecl=null;
  }
 else   if (superClass == AbsentTreeNode.instance) {
    superDecl=StaticResolution.OBJECT_DECL;
  }
 else {
    superDecl=(ClassDecl)JavaDecl.getDecl((NamedNode)superClass);
  }
  if ((superDecl != null) && (superDecl.category != CG_CLASS)) {
    ApplicationUtility.error("String_Node_Str" + node.getName().getIdent() + "String_Node_Str"+ superDecl.getName());
  }
  if (superDecl != null) {
    node.setSuperClass(superDecl.getDefType());
  }
  me.setSuperClass(superDecl);
  LinkedList declInterfaceList=new LinkedList();
  Iterator interfaceItr=node.getInterfaces().iterator();
  while (interfaceItr.hasNext()) {
    ClassDecl intf=(ClassDecl)JavaDecl.getDecl((NamedNode)interfaceItr.next());
    if (intf.category != CG_INTERFACE) {
      ApplicationUtility.error("String_Node_Str" + node.getName().getIdent() + "String_Node_Str"+ intf.getName());
    }
    declInterfaceList.addLast(intf);
  }
  me.setInterfaces(declInterfaceList);
  _addUserTypeToEnclosingClassEnviron(args.get(1),me);
  LinkedList childArgs=new LinkedList();
  childArgs.addLast(me);
  childArgs.addLast(me.getEnviron());
  TNLManip.traverseList(this,childArgs,node.getMembers());
  return null;
}

Fixed version (ground truth):
public Object visitClassDeclNode(ClassDeclNode node,LinkedList args){
  Object classDeclObj=args.get(0);
  if (classDeclObj instanceof ClassDecl) {
    ClassDecl classDecl=(ClassDecl)classDeclObj;
    if (classDecl.category == CG_INTERFACE) {
      int classPublic=classDecl.getModifiers() & PUBLIC_MOD;
      int modifiers=node.getModifiers();
      modifiers|=(classPublic | STATIC_MOD | FINAL_MOD);
      node.setModifiers(modifiers);
    }
  }
  ClassDecl me=(ClassDecl)JavaDecl.getDecl((NamedNode)node);
  if (!me.addVisitor(_myClass)) {
    return null;
  }
  TreeNode superClass=node.getSuperClass();
  ClassDecl superDecl;
  if (me == StaticResolution.OBJECT_DECL) {
    superDecl=null;
  }
 else   if (superClass == AbsentTreeNode.instance) {
    superDecl=StaticResolution.OBJECT_DECL;
  }
 else {
    try {
      superDecl=(ClassDecl)JavaDecl.getDecl(superClass);
    }
 catch (    Exception e) {
      throw new RuntimeException("String_Node_Str" + node + "String_Node_Str"+ args.get(0)+ "String_Node_Str"+ superClass+ "String_Node_Str"+ superClass.toString()+ "String_Node_Str"+ e);
    }
  }
  if ((superDecl != null) && (superDecl.category != CG_CLASS)) {
    ApplicationUtility.error("String_Node_Str" + node.getName().getIdent() + "String_Node_Str"+ superDecl.getName());
  }
  if (superDecl != null) {
    node.setSuperClass(superDecl.getDefType());
  }
  me.setSuperClass(superDecl);
  LinkedList declInterfaceList=new LinkedList();
  Iterator interfaceItr=node.getInterfaces().iterator();
  while (interfaceItr.hasNext()) {
    ClassDecl intf=(ClassDecl)JavaDecl.getDecl((NamedNode)interfaceItr.next());
    if (intf.category != CG_INTERFACE) {
      ApplicationUtility.error("String_Node_Str" + node.getName().getIdent() + "String_Node_Str"+ intf.getName());
    }
    declInterfaceList.addLast(intf);
  }
  me.setInterfaces(declInterfaceList);
  _addUserTypeToEnclosingClassEnviron(args.get(1),me);
  LinkedList childArgs=new LinkedList();
  childArgs.addLast(me);
  childArgs.addLast(me.getEnviron());
  TNLManip.traverseList(this,childArgs,node.getMembers());
  return null;
}