Program: 59772
Project: 59772
Buggy source:
private Node register(String s){
  final Class<?> c;
  try {
    c=classForName(s);
  }
 catch (  ClassNotFoundException e1) {
    return null;
  }
  try {
    Node n=getAlreadyBoundNode(c);
    return n;
  }
 catch (  NameResolutionException e) {
  }
  if (c.getSuperclass() != null) {
    register(ReflectionUtilities.getFullName(c.getSuperclass()));
  }
  for (  Class<?> i : c.getInterfaces()) {
    register(ReflectionUtilities.getFullName(i));
  }
  Class<?> enclosing=c.getEnclosingClass();
  if (enclosing != null) {
    register(ReflectionUtilities.getFullName(enclosing));
  }
  Node n=registerClass(c);
  for (  Class<?> inner_class : c.getDeclaredClasses()) {
    register(ReflectionUtilities.getFullName(inner_class));
  }
  if (n instanceof ClassNode) {
    ClassNode<?> cls=(ClassNode<?>)n;
    for (    ConstructorDef<?> def : cls.getInjectableConstructors()) {
      for (      ConstructorArg arg : def.getArgs()) {
        register(arg.getType());
        if (arg.getNamedParameterName() != null) {
          NamedParameterNode<?> np=(NamedParameterNode<?>)register(arg.getNamedParameterName());
          try {
            if (np.isSet()) {
            }
 else {
              if (!ReflectionUtilities.isCoercable(classForName(arg.getType()),classForName(np.getFullArgName()))) {
                throw new ClassHierarchyException("String_Node_Str" + arg.getType() + "String_Node_Str"+ np.getName()+ "String_Node_Str"+ np.getFullArgName());
              }
            }
          }
 catch (          ClassNotFoundException e) {
            throw new ClassHierarchyException("String_Node_Str" + arg.getType(),e);
          }
        }
      }
    }
  }
 else   if (n instanceof NamedParameterNode) {
    NamedParameterNode<?> np=(NamedParameterNode<?>)n;
    register(np.getFullArgName());
  }
  return n;
}

Fixed version (ground truth):
private Node register(String s){
  final Class<?> c;
  try {
    c=classForName(s);
  }
 catch (  ClassNotFoundException e1) {
    return null;
  }
  try {
    Node n=getAlreadyBoundNode(c);
    return n;
  }
 catch (  NameResolutionException e) {
  }
  if (c.getSuperclass() != null) {
    register(ReflectionUtilities.getFullName(c.getSuperclass()));
  }
  for (  Class<?> i : c.getInterfaces()) {
    register(ReflectionUtilities.getFullName(i));
  }
  Class<?> enclosing=c.getEnclosingClass();
  if (enclosing != null) {
    register(ReflectionUtilities.getFullName(enclosing));
  }
  Node n=registerClass(c);
  for (  Class<?> inner_class : c.getDeclaredClasses()) {
    register(ReflectionUtilities.getFullName(inner_class));
  }
  if (n instanceof ClassNode) {
    ClassNode<?> cls=(ClassNode<?>)n;
    for (    ConstructorDef<?> def : cls.getInjectableConstructors()) {
      for (      ConstructorArg arg : def.getArgs()) {
        register(arg.getType());
        if (arg.getNamedParameterName() != null) {
          NamedParameterNode<?> np=(NamedParameterNode<?>)register(arg.getNamedParameterName());
          try {
            if (np.isSet()) {
            }
 else {
              if (!ReflectionUtilities.isCoercable(classForName(arg.getType()),classForName(np.getFullArgName()))) {
                throw new ClassHierarchyException("String_Node_Str" + cls.getFullName() + "String_Node_Str"+ arg.getType()+ "String_Node_Str"+ np.getName()+ "String_Node_Str"+ np.getFullArgName());
              }
            }
          }
 catch (          ClassNotFoundException e) {
            throw new ClassHierarchyException("String_Node_Str" + arg.getType(),e);
          }
        }
      }
    }
  }
 else   if (n instanceof NamedParameterNode) {
    NamedParameterNode<?> np=(NamedParameterNode<?>)n;
    register(np.getFullArgName());
  }
  return n;
}