Program: 61737
Project: 61737
Buggy source:
public static int resolveType(TypeItem type,ABC abc){
  String name=type.fullTypeName;
  String pkg="String_Node_Str";
  int name_index=0;
  if (name.contains("String_Node_Str")) {
    pkg=name.substring(0,name.lastIndexOf('.'));
    name=name.substring(name.lastIndexOf('.') + 1);
  }
  for (  InstanceInfo ii : abc.instance_info) {
    Multiname mname=abc.constants.constant_multiname.get(ii.name_index);
    if (mname.getName(abc.constants,new ArrayList<String>()).equals(name)) {
      if (mname.getNamespace(abc.constants).hasName(pkg,abc.constants)) {
        name_index=ii.name_index;
        break;
      }
    }
  }
  for (int i=1; i < abc.constants.constant_multiname.size(); i++) {
    Multiname mname=abc.constants.constant_multiname.get(i);
    if (name.equals(mname.getName(abc.constants,new ArrayList<String>()))) {
      if (pkg.equals(mname.getNamespace(abc.constants).getName(abc.constants))) {
        name_index=i;
        break;
      }
    }
  }
  if (name_index == 0) {
    name_index=abc.constants.getMultinameId(new Multiname(Multiname.QNAME,abc.constants.getStringId(name,true),abc.constants.getNamespaceId(new Namespace(Namespace.KIND_PACKAGE,abc.constants.getStringId(pkg,true)),0,true),0,0,new ArrayList<Integer>()),true);
  }
  if (type.subtypes.isEmpty()) {
    return name_index;
  }
  List<Integer> params=new ArrayList<>();
  for (  String s : type.subtypes) {
    params.add(resolveType(new TypeItem(s),abc));
  }
  return abc.constants.getMultinameId(new Multiname(Multiname.TYPENAME,0,0,0,name_index,params),true);
}

Fixed version (ground truth):
public static int resolveType(TypeItem type,ABC abc){
  String name=type.fullTypeName;
  String pkg="String_Node_Str";
  int name_index=0;
  if (name.contains("String_Node_Str")) {
    pkg=name.substring(0,name.lastIndexOf('.'));
    name=name.substring(name.lastIndexOf('.') + 1);
  }
  for (  InstanceInfo ii : abc.instance_info) {
    Multiname mname=abc.constants.constant_multiname.get(ii.name_index);
    if (mname.getName(abc.constants,new ArrayList<String>()).equals(name)) {
      if (mname.getNamespace(abc.constants).hasName(pkg,abc.constants)) {
        name_index=ii.name_index;
        break;
      }
    }
  }
  for (int i=1; i < abc.constants.constant_multiname.size(); i++) {
    Multiname mname=abc.constants.constant_multiname.get(i);
    if (name.equals(mname.getName(abc.constants,new ArrayList<String>()))) {
      if (mname.getNamespace(abc.constants) != null && pkg.equals(mname.getNamespace(abc.constants).getName(abc.constants))) {
        name_index=i;
        break;
      }
    }
  }
  if (name_index == 0) {
    name_index=abc.constants.getMultinameId(new Multiname(Multiname.QNAME,abc.constants.getStringId(name,true),abc.constants.getNamespaceId(new Namespace(Namespace.KIND_PACKAGE,abc.constants.getStringId(pkg,true)),0,true),0,0,new ArrayList<Integer>()),true);
  }
  if (type.subtypes.isEmpty()) {
    return name_index;
  }
  List<Integer> params=new ArrayList<>();
  for (  String s : type.subtypes) {
    params.add(resolveType(new TypeItem(s),abc));
  }
  return abc.constants.getMultinameId(new Multiname(Multiname.TYPENAME,0,0,0,name_index,params),true);
}