Program: 118413
Project: 118413
Buggy source:
/** 
 * DOC nrousseau Comment method "loadProperties".
 * @param serialized
 * @param newProperties
 * @return
 */
private ComponentProperties loadProperties(String serialized,ComponentProperties newProperties){
  return ComponentProperties.fromSerialized(serialized,ComponentProperties.class,new Properties.PostSerializationSetup<ComponentProperties>(){
    @Override public void setup(    ComponentProperties properties){
      properties.setValueEvaluator(new PropertyValueEvaluator(){
        @Override public Object evaluate(        Property property,        Object storedValue){
          Property newProperty=(Property)newProperties.getProperty(property.getName());
          if (newProperty == null) {
            if ("String_Node_Str".equals(property.getName())) {
              newProperty=(Property)newProperties.getValuedProperty("String_Node_Str");
            }
 else {
              return null;
            }
          }
          if (storedValue instanceof String) {
            if (GenericTypeUtils.isEnumType(newProperty)) {
              if (newProperty != null) {
                List<?> propertyPossibleValues=((Property<?>)newProperty).getPossibleValues();
                if (propertyPossibleValues != null) {
                  for (                  Object possibleValue : propertyPossibleValues) {
                    if (possibleValue.toString().equals(storedValue)) {
                      property.setStoredValue(possibleValue);
                      return possibleValue;
                    }
                  }
                }
              }
            }
          }
          if (GenericTypeUtils.isBooleanType(newProperty)) {
            return false;
          }
          return storedValue;
        }
      }
);
    }
  }
).properties;
}

Fixed version (ground truth):
/** 
 * DOC nrousseau Comment method "loadProperties".
 * @param serialized
 * @param newProperties
 * @return
 */
private ComponentProperties loadProperties(String serialized,ComponentProperties newProperties){
  return ComponentProperties.fromSerialized(serialized,ComponentProperties.class,new Properties.PostSerializationSetup<ComponentProperties>(){
    @Override public void setup(    ComponentProperties properties){
      properties.setValueEvaluator(new PropertyValueEvaluator(){
        @Override public Object evaluate(        Property property,        Object storedValue){
          Property newProperty=(Property)newProperties.getProperty(property.getName());
          if (newProperty == null) {
            newProperty=newProperties.getValuedProperty("String_Node_Str" + property.getName());
            if (newProperty == null) {
              if ("String_Node_Str".equals(property.getName())) {
                return false;
              }
              return null;
            }
          }
          if (storedValue instanceof String) {
            if (GenericTypeUtils.isEnumType(newProperty)) {
              if (newProperty != null) {
                List<?> propertyPossibleValues=((Property<?>)newProperty).getPossibleValues();
                if (propertyPossibleValues != null) {
                  for (                  Object possibleValue : propertyPossibleValues) {
                    if (possibleValue.toString().equals(storedValue)) {
                      property.setStoredValue(possibleValue);
                      return possibleValue;
                    }
                  }
                }
              }
            }
          }
          if (GenericTypeUtils.isBooleanType(newProperty)) {
            return false;
          }
          return storedValue;
        }
      }
);
    }
  }
).properties;
}