Program: 18020
Project: 18020
Buggy source:
private HashMap<String,Method> getSetters(Object jpaEntity,EdmStructuralType structuralType,String entityName) throws ODataJPARuntimeException {
  HashMap<String,Method> setters=new HashMap<String,Method>();
  HashMap<String,String> embeddableKey=new HashMap<String,String>();
  try {
    for (    String propertyName : structuralType.getPropertyNames()) {
      EdmProperty property=(EdmProperty)structuralType.getProperty(propertyName);
      Class<?> propertyClass=null;
      try {
        if (property.getMapping() != null && ((JPAEdmMappingImpl)property.getMapping()).getJPAType() != null) {
          propertyClass=((JPAEdmMappingImpl)property.getMapping()).getJPAType();
          if (property.getType().getKind().equals(EdmTypeKind.COMPLEX)) {
            try {
              if (((JPAEdmMappingImpl)property.getMapping()).getInternalName() != null)               jpaComplexObjectMap.put(((JPAEdmMappingImpl)property.getMapping()).getInternalName(),propertyClass.newInstance());
 else               jpaComplexObjectMap.put(propertyName,propertyClass.newInstance());
            }
 catch (            InstantiationException e) {
              throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),e);
            }
catch (            IllegalAccessException e) {
              throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),e);
            }
          }
        }
 else         propertyClass=EdmTypeConvertor.convertToJavaType(property.getType());
      }
 catch (      ODataJPAModelException e) {
        throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),e);
      }
      String name=getSetterName(property);
      String[] nameParts=name.split("String_Node_Str");
      if (nameParts.length > 1) {
        jpaEmbeddableKeyObjectMap.put(propertyName,propertyClass);
        embeddableKey.put(propertyName,name);
      }
 else       setters.put(propertyName,jpaEntity.getClass().getMethod(name,propertyClass));
    }
  }
 catch (  NoSuchMethodException e) {
    throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),e);
  }
catch (  SecurityException e) {
    throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),e);
  }
catch (  EdmException e) {
    throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),e);
  }
  if (!embeddableKey.isEmpty()) {
    jpaEmbeddableKeyMap.put(jpaEntity.getClass().getName(),embeddableKey);
  }
  return setters;
}

Fixed version (ground truth):
private HashMap<String,Method> getSetters(Object jpaEntity,EdmStructuralType structuralType) throws ODataJPARuntimeException {
  HashMap<String,Method> setters=new HashMap<String,Method>();
  HashMap<String,String> embeddableKey=new HashMap<String,String>();
  try {
    for (    String propertyName : structuralType.getPropertyNames()) {
      EdmProperty property=(EdmProperty)structuralType.getProperty(propertyName);
      Class<?> propertyClass=null;
      try {
        if (property.getMapping() != null && ((JPAEdmMappingImpl)property.getMapping()).getJPAType() != null) {
          propertyClass=((JPAEdmMappingImpl)property.getMapping()).getJPAType();
          if (property.getType().getKind().equals(EdmTypeKind.COMPLEX)) {
            try {
              if (((JPAEdmMappingImpl)property.getMapping()).getInternalName() != null)               jpaComplexObjectMap.put(((JPAEdmMappingImpl)property.getMapping()).getInternalName(),propertyClass.newInstance());
 else               jpaComplexObjectMap.put(propertyName,propertyClass.newInstance());
            }
 catch (            InstantiationException e) {
              throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),e);
            }
catch (            IllegalAccessException e) {
              throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),e);
            }
          }
        }
 else         propertyClass=EdmTypeConvertor.convertToJavaType(property.getType());
      }
 catch (      ODataJPAModelException e) {
        throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),e);
      }
      String name=getSetterName(property);
      String[] nameParts=name.split("String_Node_Str");
      if (nameParts.length > 1) {
        jpaEmbeddableKeyObjectMap.put(propertyName,propertyClass);
        embeddableKey.put(propertyName,name);
      }
 else       setters.put(propertyName,jpaEntity.getClass().getMethod(name,propertyClass));
    }
  }
 catch (  NoSuchMethodException e) {
    throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),e);
  }
catch (  SecurityException e) {
    throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),e);
  }
catch (  EdmException e) {
    throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()),e);
  }
  if (!embeddableKey.isEmpty()) {
    jpaEmbeddableKeyMap.put(jpaEntity.getClass().getName(),embeddableKey);
  }
  return setters;
}