Program: 4397
Project: 4397
Buggy source:
private void injectFields(Finder finder){
  Field[] fields=clazz.getDeclaredFields();
  for (  Field field : fields) {
    Annotation[] annotations=field.getAnnotations();
    View view=null;
    for (    Annotation annotation : annotations) {
      if (annotation.annotationType() == InjectView.class) {
        int id=((InjectView)annotation).id();
        view=findViewByAnnotationId(id,field,finder);
        if (view == null) {
          throw new InjectException("String_Node_Str" + field.getName());
        }
        injectIntoField(field,view);
      }
 else       if (annotation.annotationType() == InjectViews.class) {
        String fieldTypeName=field.getType().getName();
        if (fieldTypeName.startsWith("String_Node_Str") || fieldTypeName.startsWith("String_Node_Str")) {
          int[] ids=((InjectViews)annotation).ids();
          List<View> views=new ArrayList<View>();
          for (          int id : ids) {
            view=findViewByAnnotationId(id,field,finder);
            if (view == null) {
              throw new InjectException("String_Node_Str" + field.getName() + "String_Node_Str"+ id);
            }
            views.add(view);
          }
          if (fieldTypeName.startsWith("String_Node_Str")) {
            View[] v=(View[])Array.newInstance(field.getType().getComponentType(),views.size());
            injectListIntoField(field,views.toArray(v));
          }
          if (fieldTypeName.startsWith("String_Node_Str")) {
            injectIntoField(field,views);
          }
        }
 else {
          throw new InjectException("String_Node_Str" + field.getName() + "String_Node_Str");
        }
      }
 else       if (annotation.annotationType() == InjectResource.class) {
        Object ressource=findResource(field.getType(),field,(InjectResource)annotation);
        injectIntoField(field,ressource);
      }
 else       if (annotation.annotationType() == InjectSystemService.class) {
        String serviceName=((InjectSystemService)annotation).value();
        Object service=context.getSystemService(serviceName);
        injectIntoField(field,service);
      }
 else       if (annotation.annotationType() == InjectExtra.class) {
        if (extras != null) {
          Object value=extras.get(((InjectExtra)annotation).key());
          injectIntoField(field,value);
        }
      }
 else       if (annotation.annotationType() == InjectSupportFragment.class) {
        int id=((InjectSupportFragment)annotation).id();
        Fragment fragment=findSupportFragment(field,id);
        injectIntoField(field,fragment);
      }
    }
  }
}

Fixed version (ground truth):
private void injectFields(Finder finder){
  Field[] fields=clazz.getDeclaredFields();
  for (  Field field : fields) {
    Annotation[] annotations=field.getAnnotations();
    View view=null;
    for (    Annotation annotation : annotations) {
      if (annotation.annotationType() == InjectView.class) {
        int id=((InjectView)annotation).id();
        view=findViewByAnnotationId(id,field,finder);
        if (view == null) {
          throw new InjectException("String_Node_Str" + field.getName());
        }
        injectIntoField(field,view);
      }
 else       if (annotation.annotationType() == InjectViews.class) {
        String fieldTypeName=field.getType().getName();
        if (fieldTypeName.startsWith("String_Node_Str") || fieldTypeName.startsWith("String_Node_Str")) {
          int[] ids=((InjectViews)annotation).ids();
          List<View> views=new ArrayList<View>();
          for (          int id : ids) {
            view=findViewByAnnotationId(id,field,finder);
            if (view == null) {
              throw new InjectException("String_Node_Str" + field.getName() + "String_Node_Str"+ id);
            }
            views.add(view);
          }
          if (fieldTypeName.startsWith("String_Node_Str")) {
            View[] v=(View[])Array.newInstance(field.getType().getComponentType(),views.size());
            injectListIntoField(field,views.toArray(v));
          }
 else           if (fieldTypeName.startsWith("String_Node_Str")) {
            injectIntoField(field,views);
          }
        }
 else {
          throw new InjectException("String_Node_Str" + field.getName() + "String_Node_Str");
        }
      }
 else       if (annotation.annotationType() == InjectResource.class) {
        Object ressource=findResource(field.getType(),field,(InjectResource)annotation);
        injectIntoField(field,ressource);
      }
 else       if (annotation.annotationType() == InjectSystemService.class) {
        String serviceName=((InjectSystemService)annotation).value();
        Object service=context.getSystemService(serviceName);
        injectIntoField(field,service);
      }
 else       if (annotation.annotationType() == InjectExtra.class) {
        if (extras != null) {
          Object value=extras.get(((InjectExtra)annotation).key());
          injectIntoField(field,value);
        }
      }
 else       if (annotation.annotationType() == InjectSupportFragment.class) {
        int id=((InjectSupportFragment)annotation).id();
        Fragment fragment=findSupportFragment(field,id);
        injectIntoField(field,fragment);
      }
    }
  }
}