Program: 85369
Project: 85369
Buggy source:
private Set<Annotation> buildClassAnnotations(SootClass c){
  Set<String> skipList=new HashSet<String>();
  Set<Annotation> annotations=buildCommonAnnotations(c,skipList);
  if (c.hasTag("String_Node_Str")) {
    EnclosingMethodTag eMethTag=(EnclosingMethodTag)c.getTag("String_Node_Str");
    Annotation enclosingMethodItem=buildEnclosingMethodTag(eMethTag,skipList);
    if (enclosingMethodItem != null)     annotations.add(enclosingMethodItem);
  }
 else   if (c.hasOuterClass()) {
    if (skipList.add("String_Node_Str")) {
      ImmutableAnnotationElement enclosingElement=new ImmutableAnnotationElement("String_Node_Str",new ImmutableTypeEncodedValue(SootToDexUtils.getDexClassName(c.getOuterClass().getName())));
      annotations.add(new ImmutableAnnotation(AnnotationVisibility.SYSTEM,"String_Node_Str",Collections.singleton(enclosingElement)));
    }
  }
  if (c.hasOuterClass()) {
    InnerClassAttribute icTag=(InnerClassAttribute)c.getOuterClass().getTag("String_Node_Str");
    if (icTag != null) {
      List<Annotation> innerClassItem=buildInnerClassAttribute(c,icTag,skipList);
      if (innerClassItem != null)       annotations.addAll(innerClassItem);
    }
  }
  InnerClassAttribute icTag=(InnerClassAttribute)c.getTag("String_Node_Str");
  if (icTag != null) {
    List<Annotation> memberClassesItem=buildMemberClassesAttribute(c,icTag,skipList);
    if (memberClassesItem != null)     annotations.addAll(memberClassesItem);
  }
  for (  Tag t : c.getTags()) {
    if (t.getName().equals("String_Node_Str")) {
      List<ImmutableAnnotation> visibilityItems=buildVisibilityAnnotationTag((VisibilityAnnotationTag)t,skipList);
      annotations.addAll(visibilityItems);
    }
  }
  return annotations;
}

Fixed version (ground truth):
private Set<Annotation> buildClassAnnotations(SootClass c){
  Set<String> skipList=new HashSet<String>();
  Set<Annotation> annotations=buildCommonAnnotations(c,skipList);
  if (c.hasTag("String_Node_Str")) {
    EnclosingMethodTag eMethTag=(EnclosingMethodTag)c.getTag("String_Node_Str");
    Annotation enclosingMethodItem=buildEnclosingMethodTag(eMethTag,skipList);
    if (enclosingMethodItem != null)     annotations.add(enclosingMethodItem);
  }
 else   if (c.hasOuterClass()) {
    if (skipList.add("String_Node_Str")) {
      ImmutableAnnotationElement enclosingElement=new ImmutableAnnotationElement("String_Node_Str",new ImmutableTypeEncodedValue(SootToDexUtils.getDexClassName(c.getOuterClass().getName())));
      annotations.add(new ImmutableAnnotation(AnnotationVisibility.SYSTEM,"String_Node_Str",Collections.singleton(enclosingElement)));
    }
  }
  if (c.hasOuterClass()) {
    InnerClassAttribute icTag=(InnerClassAttribute)c.getOuterClass().getTag("String_Node_Str");
    if (icTag != null) {
      List<Annotation> innerClassItem=buildInnerClassAttribute(c,icTag,skipList);
      if (innerClassItem != null)       annotations.addAll(innerClassItem);
    }
  }
  InnerClassAttribute icTag=(InnerClassAttribute)c.getTag("String_Node_Str");
  if (icTag != null) {
    List<Annotation> memberClassesItem=buildMemberClassesAttribute(c,icTag,skipList);
    if (memberClassesItem != null)     annotations.addAll(memberClassesItem);
  }
  for (  Tag t : c.getTags()) {
    if (t.getName().equals("String_Node_Str")) {
      List<ImmutableAnnotation> visibilityItems=buildVisibilityAnnotationTag((VisibilityAnnotationTag)t,skipList);
      annotations.addAll(visibilityItems);
    }
  }
  List<AnnotationElem> defaults=new ArrayList<AnnotationElem>();
  for (  SootMethod method : c.getMethods()) {
    AnnotationDefaultTag tag=(AnnotationDefaultTag)method.getTag("String_Node_Str");
    if (tag != null) {
      tag.getDefaultVal().setName(method.getName());
      defaults.add(tag.getDefaultVal());
    }
  }
  if (defaults.size() > 0) {
    VisibilityAnnotationTag defaultAnnotationTag=new VisibilityAnnotationTag(AnnotationConstants.RUNTIME_INVISIBLE);
    AnnotationTag a=new AnnotationTag("String_Node_Str");
    defaultAnnotationTag.addAnnotation(a);
    AnnotationTag at=new AnnotationTag(SootToDexUtils.getDexClassName(c.getName()));
    AnnotationAnnotationElem ae=new AnnotationAnnotationElem(at,'@',"String_Node_Str");
    a.addElem(ae);
    for (    AnnotationElem aelem : defaults)     at.addElem(aelem);
    List<ImmutableAnnotation> visibilityItems=buildVisibilityAnnotationTag(defaultAnnotationTag,skipList);
    annotations.addAll(visibilityItems);
  }
  return annotations;
}