Program: 20522
Project: 20522
Buggy source:
public void emitAnnotations(Annotable annotable) throws IOException {
  for (  RamlSupportedAnnotation suportedAnnotation : suportedAnnotations) {
    Optional<Annotation> annotationOptional=suportedAnnotation.getAnnotationInstance(annotable);
    if (annotationOptional.isPresent() == false) {
      continue;
    }
    Annotation annotation=annotationOptional.get();
    if (annotation.annotationType().getDeclaredMethods().length == 0) {
      writer.appendLine("String_Node_Str" + annotation.annotationType().getSimpleName() + "String_Node_Str");
    }
 else {
      writer.appendLine("String_Node_Str" + annotation.annotationType().getSimpleName() + "String_Node_Str");
      writer.indent();
      writer.appendLine("String_Node_Str");
      writer.indent();
      try {
        for (        Method method : annotation.annotationType().getDeclaredMethods()) {
          Object value=method.invoke(annotation);
          if (value.getClass().isArray()) {
            List<Object> list=new ArrayList<>();
            for (int i=0; i < Array.getLength(value); i++) {
              list.add(Array.get(value,i));
            }
            String listString=Joiner.on("String_Node_Str").join(FluentIterable.from(list).transform(new Function<Object,String>(){
              @Override public String apply(              Object input){
                return toValue(input);
              }
            }
));
            writer.appendLine(method.getName() + "String_Node_Str" + listString+ "String_Node_Str");
          }
 else {
            writer.appendLine(method.getName() + "String_Node_Str" + toValue(value));
          }
        }
        writer.outdent();
        writer.outdent();
      }
 catch (      Exception e) {
        throw new IOException("String_Node_Str",e);
      }
    }
  }
}

Fixed version (ground truth):
public void emitAnnotations(Annotable annotable) throws IOException {
  for (  RamlSupportedAnnotation suportedAnnotation : suportedAnnotations) {
    Optional<Annotation> annotationOptional=suportedAnnotation.getAnnotationInstance(annotable);
    if (annotationOptional.isPresent() == false) {
      continue;
    }
    Annotation annotation=annotationOptional.get();
    if (annotation.annotationType().getDeclaredMethods().length == 0) {
      writer.appendLine("String_Node_Str" + annotation.annotationType().getSimpleName() + "String_Node_Str");
    }
 else {
      writer.appendLine("String_Node_Str" + annotation.annotationType().getSimpleName() + "String_Node_Str");
      writer.indent();
      try {
        for (        Method method : annotation.annotationType().getDeclaredMethods()) {
          Object value=method.invoke(annotation);
          if (value.getClass().isArray()) {
            List<Object> list=new ArrayList<>();
            for (int i=0; i < Array.getLength(value); i++) {
              list.add(Array.get(value,i));
            }
            String listString=Joiner.on("String_Node_Str").join(FluentIterable.from(list).transform(new Function<Object,String>(){
              @Override public String apply(              Object input){
                return toValue(input);
              }
            }
));
            writer.appendLine(method.getName() + "String_Node_Str" + listString+ "String_Node_Str");
          }
 else {
            writer.appendLine(method.getName() + "String_Node_Str" + toValue(value));
          }
        }
        writer.outdent();
      }
 catch (      Exception e) {
        throw new IOException("String_Node_Str",e);
      }
    }
  }
}