Program: 44159
Project: 44159
Buggy source:
/** 
 * Inject an extra to the given field, using the value of the given annotation as extra id. If the annotation has no value, then use the field name as extra id.
 */
private void injectExtra(Field field,InjectExtra annotation){
  String value=annotation.value();
  Intent intent=activity.getIntent();
  if (InjectExtra.DEFAULT_VALUE.equals(value)) {
    value=field.getName();
  }
  Class<?> type=field.getType();
  Object extra=null;
  try {
    if (String.class.isAssignableFrom(type)) {
      extra=intent.getStringExtra(value);
    }
    if (ArrayList.class.isAssignableFrom(type)) {
      extra=intent.getStringArrayListExtra(value);
      if (extra == null) {
        extra=intent.getParcelableArrayListExtra(value);
      }
    }
 else     if (Boolean.class.isAssignableFrom(type)) {
      extra=intent.getBooleanExtra(value,false);
    }
 else     if (Bundle.class.isAssignableFrom(type)) {
      extra=intent.getBundleExtra(value);
    }
 else     if (Byte.class.isAssignableFrom(type)) {
      extra=intent.getByteExtra(value,(byte)0);
    }
 else     if (Character.class.isAssignableFrom(type)) {
      extra=intent.getCharExtra(value,(char)0);
    }
 else     if (CharSequence.class.isAssignableFrom(type)) {
      extra=intent.getCharSequenceExtra(value);
    }
 else     if (Double.class.isAssignableFrom(type)) {
      extra=intent.getDoubleExtra(value,0d);
    }
 else     if (Float.class.isAssignableFrom(type)) {
      extra=intent.getFloatExtra(value,0f);
    }
 else     if (Integer.class.isAssignableFrom(type)) {
      extra=intent.getIntExtra(value,0);
    }
 else     if (Long.class.isAssignableFrom(type)) {
      extra=intent.getLongExtra(value,0l);
    }
 else     if (Parcelable.class.isAssignableFrom(type)) {
      extra=intent.getParcelableExtra(value);
    }
 else     if (Serializable.class.isAssignableFrom(type)) {
      extra=intent.getSerializableExtra(value);
    }
 else     if (Short.class.isAssignableFrom(type)) {
      extra=intent.getShortExtra(value,(short)0);
    }
 else     if (type.isArray()) {
      Class<?> componentType=type.getComponentType();
      if (String.class.isAssignableFrom(componentType)) {
        extra=intent.getStringArrayExtra(value);
      }
 else       if (Boolean.class.isAssignableFrom(componentType)) {
        extra=intent.getBooleanArrayExtra(value);
      }
 else       if (Byte.class.isAssignableFrom(componentType)) {
        extra=intent.getByteArrayExtra(value);
      }
 else       if (Character.class.isAssignableFrom(componentType)) {
        extra=intent.getCharArrayExtra(value);
      }
 else       if (Double.class.isAssignableFrom(componentType)) {
        extra=intent.getDoubleArrayExtra(value);
      }
 else       if (Float.class.isAssignableFrom(componentType)) {
        extra=intent.getFloatArrayExtra(value);
      }
 else       if (Integer.class.isAssignableFrom(componentType)) {
        extra=intent.getIntArrayExtra(value);
      }
 else       if (Long.class.isAssignableFrom(componentType)) {
        extra=intent.getLongArrayExtra(value);
      }
 else       if (Parcelable.class.isAssignableFrom(componentType)) {
        extra=intent.getParcelableArrayExtra(value);
      }
 else       if (Short.class.isAssignableFrom(componentType)) {
        extra=intent.getShortArrayExtra(value);
      }
    }
    if (extra == null) {
      String message="String_Node_Str" + "String_Node_Str" + field.getName() + "String_Node_Str"+ field.getDeclaringClass().getCanonicalName()+ "String_Node_Str"+ "String_Node_Str";
      if (annotation.mandatory()) {
        throw new RuntimeException(message);
      }
 else {
        Log.i(getClass().getCanonicalName(),message);
        return;
      }
    }
    field.setAccessible(true);
    field.set(activity,extra);
  }
 catch (  Exception e) {
    throw new RuntimeException("String_Node_Str" + "String_Node_Str" + field.getName() + "String_Node_Str"+ field.getDeclaringClass().getCanonicalName(),e);
  }
}

Fixed version (ground truth):
/** 
 * Inject an extra to the given field, using the value of the given annotation as extra id. If the annotation has no value, then use the field name as extra id.
 */
private void injectExtra(Field field,InjectExtra annotation){
  String value=annotation.value();
  Intent intent=activity.getIntent();
  if (InjectExtra.DEFAULT_VALUE.equals(value)) {
    value=field.getName();
  }
  Class<?> type=field.getType();
  Object extra=null;
  try {
    if (String.class.isAssignableFrom(type)) {
      extra=intent.getStringExtra(value);
    }
 else     if (ArrayList.class.isAssignableFrom(type)) {
      extra=intent.getStringArrayListExtra(value);
      if (extra == null) {
        extra=intent.getParcelableArrayListExtra(value);
      }
    }
 else     if (Boolean.class.isAssignableFrom(type)) {
      extra=intent.getBooleanExtra(value,false);
    }
 else     if (Bundle.class.isAssignableFrom(type)) {
      extra=intent.getBundleExtra(value);
    }
 else     if (Byte.class.isAssignableFrom(type)) {
      extra=intent.getByteExtra(value,(byte)0);
    }
 else     if (Character.class.isAssignableFrom(type)) {
      extra=intent.getCharExtra(value,(char)0);
    }
 else     if (CharSequence.class.isAssignableFrom(type)) {
      extra=intent.getCharSequenceExtra(value);
    }
 else     if (Double.class.isAssignableFrom(type)) {
      extra=intent.getDoubleExtra(value,0d);
    }
 else     if (Float.class.isAssignableFrom(type)) {
      extra=intent.getFloatExtra(value,0f);
    }
 else     if (Integer.class.isAssignableFrom(type)) {
      extra=intent.getIntExtra(value,0);
    }
 else     if (Long.class.isAssignableFrom(type)) {
      extra=intent.getLongExtra(value,0l);
    }
 else     if (Parcelable.class.isAssignableFrom(type)) {
      extra=intent.getParcelableExtra(value);
    }
 else     if (Serializable.class.isAssignableFrom(type)) {
      extra=intent.getSerializableExtra(value);
    }
 else     if (Short.class.isAssignableFrom(type)) {
      extra=intent.getShortExtra(value,(short)0);
    }
 else     if (type.isArray()) {
      Class<?> componentType=type.getComponentType();
      if (String.class.isAssignableFrom(componentType)) {
        extra=intent.getStringArrayExtra(value);
      }
 else       if (Boolean.class.isAssignableFrom(componentType)) {
        extra=intent.getBooleanArrayExtra(value);
      }
 else       if (Byte.class.isAssignableFrom(componentType)) {
        extra=intent.getByteArrayExtra(value);
      }
 else       if (Character.class.isAssignableFrom(componentType)) {
        extra=intent.getCharArrayExtra(value);
      }
 else       if (Double.class.isAssignableFrom(componentType)) {
        extra=intent.getDoubleArrayExtra(value);
      }
 else       if (Float.class.isAssignableFrom(componentType)) {
        extra=intent.getFloatArrayExtra(value);
      }
 else       if (Integer.class.isAssignableFrom(componentType)) {
        extra=intent.getIntArrayExtra(value);
      }
 else       if (Long.class.isAssignableFrom(componentType)) {
        extra=intent.getLongArrayExtra(value);
      }
 else       if (Parcelable.class.isAssignableFrom(componentType)) {
        extra=intent.getParcelableArrayExtra(value);
      }
 else       if (Short.class.isAssignableFrom(componentType)) {
        extra=intent.getShortArrayExtra(value);
      }
    }
    if (extra == null) {
      String message="String_Node_Str" + "String_Node_Str" + field.getName() + "String_Node_Str"+ field.getDeclaringClass().getCanonicalName()+ "String_Node_Str"+ "String_Node_Str";
      if (annotation.mandatory()) {
        throw new RuntimeException(message);
      }
 else {
        Log.i(getClass().getCanonicalName(),message);
        return;
      }
    }
    field.setAccessible(true);
    field.set(activity,extra);
  }
 catch (  Exception e) {
    throw new RuntimeException("String_Node_Str" + "String_Node_Str" + field.getName() + "String_Node_Str"+ field.getDeclaringClass().getCanonicalName(),e);
  }
}