Program: 59852
Project: 59852
Buggy source:
public Node register(Class<?> c){
  if (c == null) {
    return null;
  }
  try {
    Node n=getNode(c);
    return n;
  }
 catch (  NameResolutionException e) {
  }
  if (c.getSuperclass() != null) {
    register(c.getSuperclass());
  }
  for (  Class<?> i : c.getInterfaces()) {
    register(i);
  }
  register(c.getEnclosingClass());
  Package pack=c.getPackage();
  if (pack != null) {
    String[] packageList=pack.getName().split(regexp);
    for (int i=0; i < packageList.length; i++) {
      try {
        registerPackage(Arrays.copyOf(packageList,i + 1));
      }
 catch (      NameResolutionException e) {
        throw new IllegalStateException("String_Node_Str" + Arrays.toString(Arrays.copyOf(packageList,i + 1)) + "String_Node_Str",e);
      }
    }
  }
  Node n=registerClass(c);
  for (  Class<?> inner_class : c.getDeclaredClasses()) {
    register(inner_class);
  }
  if (n instanceof ClassNode) {
    ClassNode<?> cls=(ClassNode<?>)n;
    for (    ConstructorDef<?> def : cls.injectableConstructors) {
      for (      ConstructorArg arg : def.args) {
        try {
          getNode(arg.type);
        }
 catch (        NameResolutionException e) {
          register(arg.type);
        }
      }
    }
  }
 else   if (n instanceof NamedParameterNode) {
    NamedParameterNode<?> np=(NamedParameterNode<?>)n;
    try {
      getNode(np.argClass);
    }
 catch (    NameResolutionException e) {
      register(np.argClass);
    }
  }
  return n;
}

Fixed version (ground truth):
public Node register(Class<?> c){
  if (c == null) {
    return null;
  }
  try {
    Node n=getNode(c);
    return n;
  }
 catch (  NameResolutionException e) {
  }
  if (c.getSuperclass() != null) {
    register(c.getSuperclass());
  }
  for (  Class<?> i : c.getInterfaces()) {
    register(i);
  }
  register(c.getEnclosingClass());
  Package pack=c.getPackage();
  if (pack != null) {
    String[] packageList=pack.getName().split(regexp);
    for (int i=0; i < packageList.length; i++) {
      try {
        registerPackage(Arrays.copyOf(packageList,i + 1));
      }
 catch (      NameResolutionException e) {
        throw new IllegalStateException("String_Node_Str" + Arrays.toString(Arrays.copyOf(packageList,i + 1)) + "String_Node_Str",e);
      }
    }
  }
  Node n=registerClass(c);
  for (  Class<?> inner_class : c.getDeclaredClasses()) {
    register(inner_class);
  }
  if (n instanceof ClassNode) {
    ClassNode<?> cls=(ClassNode<?>)n;
    for (    ConstructorDef<?> def : cls.injectableConstructors) {
      for (      ConstructorArg arg : def.args) {
        register(arg.type);
        if (arg.name != null) {
          NamedParameterNode<?> np=(NamedParameterNode<?>)register(arg.name.value());
          if (!ReflectionUtilities.isCoercable(arg.type,np.getArgClass())) {
            throw new IllegalArgumentException("String_Node_Str" + arg.type + "String_Node_Str"+ np.getName()+ "String_Node_Str"+ np.getArgClass());
          }
        }
      }
    }
  }
 else   if (n instanceof NamedParameterNode) {
    NamedParameterNode<?> np=(NamedParameterNode<?>)n;
    try {
      getNode(np.argClass);
    }
 catch (    NameResolutionException e) {
      register(np.argClass);
    }
  }
  return n;
}