Program: 59784
Project: 59784
Buggy source:
public Tint(URL[] jars,boolean checkTang){
  Object[] args=new Object[jars.length + 6];
  for (int i=0; i < jars.length; i++) {
    args[i]=jars[i];
  }
  args[args.length - 1]=new TypeAnnotationsScanner();
  args[args.length - 2]=new SubTypesScanner();
  args[args.length - 3]=new MethodAnnotationsScanner();
  args[args.length - 4]=new MethodParameterScanner();
  args[args.length - 5]="String_Node_Str";
  args[args.length - 6]="String_Node_Str";
  Reflections r=new Reflections(args);
  Set<Class<?>> classes=new MonotonicSet<>();
  Set<String> strings=new TreeSet<>();
  Set<String> moduleBuilders=new MonotonicSet<>();
  Set<String> injectConstructors=r.getStore().getConstructorsAnnotatedWith(ReflectionUtilities.getFullName(Inject.class));
  for (  String s : injectConstructors) {
    strings.add(s.replaceAll("String_Node_Str","String_Node_Str"));
  }
  Set<String> parameterConstructors=r.getStore().get(MethodParameterScanner.class,ReflectionUtilities.getFullName(Parameter.class));
  for (  String s : parameterConstructors) {
    strings.add(s.replaceAll("String_Node_Str","String_Node_Str"));
  }
  strings.addAll(r.getStore().get(TypeAnnotationsScanner.class,ReflectionUtilities.getFullName(DefaultImplementation.class)));
  strings.addAll(r.getStore().get(TypeAnnotationsScanner.class,ReflectionUtilities.getFullName(NamedParameter.class)));
  strings.addAll(r.getStore().get(TypeAnnotationsScanner.class,ReflectionUtilities.getFullName(Unit.class)));
  strings.addAll(r.getStore().get(SubTypesScanner.class,ReflectionUtilities.getFullName(Name.class)));
  moduleBuilders.addAll(r.getStore().get(SubTypesScanner.class,ReflectionUtilities.getFullName(ConfigurationModuleBuilder.class)));
  ch=Tang.Factory.getTang().getDefaultClassHierarchy(jars,new Class[0]);
  for (  Class<?> c : classes) {
    strings.add(ReflectionUtilities.getFullName(c));
  }
  for (  String s : strings) {
    try {
      if (checkTang || !s.startsWith("String_Node_Str")) {
        ch.getNode(s);
      }
    }
 catch (    ClassHierarchyException|NameResolutionException e) {
      System.err.println(e.getMessage());
    }
  }
  for (  String mb : moduleBuilders) {
    try {
      @SuppressWarnings("String_Node_Str") Class<ConfigurationModuleBuilder> cmb=(Class<ConfigurationModuleBuilder>)ch.classForName(mb);
      for (      Field f : cmb.getFields()) {
        if (ReflectionUtilities.isCoercable(ConfigurationModule.class,f.getType())) {
          int mod=f.getModifiers();
          if (!Modifier.isPrivate(mod)) {
            if (!Modifier.isFinal(mod)) {
              System.err.println("String_Node_Str" + f);
            }
            if (!Modifier.isStatic(f.getModifiers())) {
              System.err.println("String_Node_Str" + f);
            }
 else {
              String s=f.getDeclaringClass() + "String_Node_Str" + f.getName();
              try {
                f.setAccessible(true);
                modules.put(f,(ConfigurationModule)(f.get(null)));
              }
 catch (              ExceptionInInitializerError e) {
                System.err.println("String_Node_Str" + ReflectionUtilities.getFullName(f) + "String_Node_Str"+ e.getCause().getMessage());
              }
catch (              IllegalAccessException e) {
                throw new RuntimeException(e);
              }
            }
          }
        }
      }
    }
 catch (    ClassNotFoundException e) {
      e.printStackTrace();
    }
    NodeVisitor<Node> v=new AbstractClassHierarchyNodeVisitor(){
      @Override public boolean visit(      NamedParameterNode<?> node){
        if (node.getDefaultInstanceAsString() != null && !usages.contains(node.getDefaultInstanceAsString(),node)) {
          usages.put(node.getDefaultInstanceAsString(),node);
        }
        return true;
      }
      @Override public boolean visit(      PackageNode node){
        return true;
      }
      @Override public boolean visit(      ClassNode<?> node){
        for (        ConstructorDef<?> d : node.getInjectableConstructors()) {
          for (          ConstructorArg a : d.getArgs()) {
            if (a.getNamedParameterName() != null && !usages.contains(a.getNamedParameterName(),node)) {
              usages.put(a.getNamedParameterName(),node);
            }
          }
        }
        return true;
      }
    }
;
    Walk.preorder(v,null,ch.getNamespace());
  }
  for (  Field f : modules.keySet()) {
    ConfigurationModule m=modules.get(f);
    Set<NamedParameterNode<?>> nps=m.getBoundNamedParameters();
    for (    NamedParameterNode<?> np : nps) {
      setters.put(np,f);
    }
  }
}

Fixed version (ground truth):
public Tint(URL[] jars,boolean checkTang){
  Object[] args=new Object[jars.length + 6];
  for (int i=0; i < jars.length; i++) {
    args[i]=jars[i];
  }
  args[args.length - 1]=new TypeAnnotationsScanner();
  args[args.length - 2]=new SubTypesScanner();
  args[args.length - 3]=new MethodAnnotationsScanner();
  args[args.length - 4]=new MethodParameterScanner();
  args[args.length - 5]="String_Node_Str";
  args[args.length - 6]="String_Node_Str";
  Reflections r=new Reflections(args);
  Set<Class<?>> classes=new MonotonicSet<>();
  Set<String> strings=new TreeSet<>();
  Set<String> moduleBuilders=new MonotonicSet<>();
  Set<String> injectConstructors=r.getStore().getConstructorsAnnotatedWith(ReflectionUtilities.getFullName(Inject.class));
  for (  String s : injectConstructors) {
    strings.add(s.replaceAll("String_Node_Str","String_Node_Str"));
  }
  Set<String> parameterConstructors=r.getStore().get(MethodParameterScanner.class,ReflectionUtilities.getFullName(Parameter.class));
  for (  String s : parameterConstructors) {
    strings.add(s.replaceAll("String_Node_Str","String_Node_Str"));
  }
  Set<String> defaultStrings=r.getStore().get(TypeAnnotationsScanner.class,ReflectionUtilities.getFullName(DefaultImplementation.class));
  strings.addAll(defaultStrings);
  strings.addAll(r.getStore().get(TypeAnnotationsScanner.class,ReflectionUtilities.getFullName(NamedParameter.class)));
  strings.addAll(r.getStore().get(TypeAnnotationsScanner.class,ReflectionUtilities.getFullName(Unit.class)));
  strings.addAll(r.getStore().get(SubTypesScanner.class,ReflectionUtilities.getFullName(Name.class)));
  moduleBuilders.addAll(r.getStore().get(SubTypesScanner.class,ReflectionUtilities.getFullName(ConfigurationModuleBuilder.class)));
  ch=Tang.Factory.getTang().getDefaultClassHierarchy(jars,new Class[0]);
  for (  String s : defaultStrings) {
    try {
      if (checkTang || !s.startsWith("String_Node_Str")) {
        try {
          DefaultImplementation di=ch.classForName(s).getAnnotation(DefaultImplementation.class);
          String diName=di.value() == Void.class ? di.name() : ReflectionUtilities.getFullName(di.value());
          strings.add(diName);
          usages.put(diName,ch.getNode(s));
        }
 catch (        ClassHierarchyException|NameResolutionException e) {
          System.err.println(e.getMessage());
        }
      }
    }
 catch (    ClassNotFoundException e) {
      throw new RuntimeException(e);
    }
  }
  for (  String s : strings) {
    try {
      if (checkTang || !s.startsWith("String_Node_Str")) {
        ch.getNode(s);
      }
    }
 catch (    ClassHierarchyException|NameResolutionException e) {
      System.err.println(e.getMessage());
    }
  }
  for (  String mb : moduleBuilders) {
    if (checkTang || !mb.startsWith("String_Node_Str")) {
      try {
        @SuppressWarnings("String_Node_Str") Class<ConfigurationModuleBuilder> cmb=(Class<ConfigurationModuleBuilder>)ch.classForName(mb);
        for (        Field f : cmb.getFields()) {
          if (ReflectionUtilities.isCoercable(ConfigurationModule.class,f.getType())) {
            int mod=f.getModifiers();
            if (!Modifier.isPrivate(mod)) {
              if (!Modifier.isFinal(mod)) {
                System.err.println("String_Node_Str" + f);
              }
              if (!Modifier.isStatic(f.getModifiers())) {
                System.err.println("String_Node_Str" + f);
              }
 else {
                try {
                  f.setAccessible(true);
                  modules.put(f,(ConfigurationModule)(f.get(null)));
                  for (                  Entry<String,String> e : modules.get(f).toStringPairs()) {
                    try {
                      Node n=ch.getNode(e.getKey());
                      setters.put(n,f);
                    }
 catch (                    NameResolutionException ex) {
                    }
                    try {
                      Node n=ch.getNode(e.getValue());
                      usages.put(ReflectionUtilities.getFullName(f),n);
                    }
 catch (                    NameResolutionException ex) {
                    }
                  }
                }
 catch (                ExceptionInInitializerError e) {
                  System.err.println("String_Node_Str" + ReflectionUtilities.getFullName(f) + "String_Node_Str"+ e.getCause().getMessage());
                }
catch (                IllegalAccessException e) {
                  throw new RuntimeException(e);
                }
              }
            }
          }
        }
      }
 catch (      ClassNotFoundException e) {
        e.printStackTrace();
      }
    }
  }
  for (  Class<?> c : classes) {
    strings.add(ReflectionUtilities.getFullName(c));
  }
  NodeVisitor<Node> v=new AbstractClassHierarchyNodeVisitor(){
    @Override public boolean visit(    NamedParameterNode<?> node){
      if (node.getDefaultInstanceAsString() != null && !usages.contains(node.getDefaultInstanceAsString(),node)) {
        usages.put(node.getDefaultInstanceAsString(),node);
      }
      return true;
    }
    @Override public boolean visit(    PackageNode node){
      return true;
    }
    @Override public boolean visit(    ClassNode<?> node){
      for (      ConstructorDef<?> d : node.getInjectableConstructors()) {
        for (        ConstructorArg a : d.getArgs()) {
          if (a.getNamedParameterName() != null && !usages.contains(a.getNamedParameterName(),node)) {
            usages.put(a.getNamedParameterName(),node);
          }
        }
      }
      return true;
    }
  }
;
  Walk.preorder(v,null,ch.getNamespace());
  for (  Field f : modules.keySet()) {
    ConfigurationModule m=modules.get(f);
    Set<NamedParameterNode<?>> nps=m.getBoundNamedParameters();
    for (    NamedParameterNode<?> np : nps) {
      if (!setters.contains(np,f)) {
        setters.put(np,f);
      }
    }
  }
}