Program: 33338
Project: 33338
Buggy source:
@SuppressWarnings({"String_Node_Str"}) public static void populate(final Edm metadata,final Object bean,final Class<?> reference,final Class<? extends Annotation> getterAnn,final Iterator<? extends CommonODataProperty> propItor){
  if (bean != null) {
    while (propItor.hasNext()) {
      final CommonODataProperty property=propItor.next();
      final Method getter=ClassUtils.findGetterByAnnotatedName(reference,getterAnn,property.getName());
      if (getter == null) {
        LOG.warn("String_Node_Str",property.getName(),bean.getClass().getName());
      }
 else {
        try {
          if (property.hasNullValue()) {
            setPropertyValue(bean,getter,null);
          }
          if (property.hasPrimitiveValue()) {
            setPropertyValue(bean,getter,property.getPrimitiveValue().toValue());
          }
          if (property.hasComplexValue()) {
            final Object complex=getter.getReturnType().newInstance();
            populate(metadata,complex,Property.class,property.getValue().asComplex().iterator());
            setPropertyValue(bean,getter,complex);
          }
          if (property.hasCollectionValue()) {
            final ParameterizedType collType=(ParameterizedType)getter.getGenericReturnType();
            final Class<?> collItemClass=(Class<?>)collType.getActualTypeArguments()[0];
            Collection<Object> collection=(Collection<Object>)getter.invoke(bean);
            if (collection == null) {
              collection=new ArrayList<Object>();
              setPropertyValue(bean,getter,collection);
            }
            final Iterator<ODataValue> collPropItor=property.getValue().asCollection().iterator();
            while (collPropItor.hasNext()) {
              final ODataValue value=collPropItor.next();
              if (value.isPrimitive()) {
                collection.add(value.asPrimitive().toValue());
              }
              if (value.isComplex()) {
                final Object collItem=collItemClass.newInstance();
                populate(metadata,collItem,Property.class,value.asComplex().iterator());
                collection.add(collItem);
              }
            }
          }
        }
 catch (        Exception e) {
          LOG.error("String_Node_Str",getter,bean,e);
        }
      }
    }
  }
}

Fixed version (ground truth):
@SuppressWarnings({"String_Node_Str"}) public static void populate(final Edm metadata,final Object bean,final Class<?> reference,final Class<? extends Annotation> getterAnn,final Iterator<? extends CommonODataProperty> propItor){
  if (bean != null) {
    while (propItor.hasNext()) {
      final CommonODataProperty property=propItor.next();
      final Method getter=ClassUtils.findGetterByAnnotatedName(reference,getterAnn,property.getName());
      if (getter == null) {
        LOG.warn("String_Node_Str",property.getName(),bean.getClass().getName());
      }
 else {
        try {
          if (property.hasNullValue()) {
            setPropertyValue(bean,getter,null);
          }
          if (property.hasPrimitiveValue()) {
            setPropertyValue(bean,getter,primitiveValueToObject(property.getPrimitiveValue()));
          }
          if (property.hasComplexValue()) {
            final Object complex=getter.getReturnType().newInstance();
            populate(metadata,complex,Property.class,property.getValue().asComplex().iterator());
            setPropertyValue(bean,getter,complex);
          }
          if (property.hasCollectionValue()) {
            final ParameterizedType collType=(ParameterizedType)getter.getGenericReturnType();
            final Class<?> collItemClass=(Class<?>)collType.getActualTypeArguments()[0];
            Collection<Object> collection=(Collection<Object>)getter.invoke(bean);
            if (collection == null) {
              collection=new ArrayList<Object>();
              setPropertyValue(bean,getter,collection);
            }
            final Iterator<ODataValue> collPropItor=property.getValue().asCollection().iterator();
            while (collPropItor.hasNext()) {
              final ODataValue value=collPropItor.next();
              if (value.isPrimitive()) {
                collection.add(primitiveValueToObject(value.asPrimitive()));
              }
              if (value.isComplex()) {
                final Object collItem=collItemClass.newInstance();
                populate(metadata,collItem,Property.class,value.asComplex().iterator());
                collection.add(collItem);
              }
            }
          }
        }
 catch (        Exception e) {
          LOG.error("String_Node_Str",getter,bean,e);
        }
      }
    }
  }
}