Program: 8485
Project: 8485
Buggy source:
@SuppressWarnings({"String_Node_Str"}) @Override public Object deserialize(JsonParser jp,DeserializationContext ctxt) throws IOException, JsonProcessingException {
  Object entity=BeanUtils.instantiateClass(getValueClass());
  for (JsonToken tok=jp.nextToken(); tok != JsonToken.END_OBJECT; tok=jp.nextToken()) {
    String name=jp.getCurrentName();
switch (tok) {
case FIELD_NAME:
{
        AttributeMetadata attrMeta=repoMeta.entityMetadata().attribute(name);
        Object val=null;
        if (name.startsWith("String_Node_Str")) {
          entity=domainObjectResolver.resolve(RepositoryRestController.BASE_URI.get(),URI.create(name.substring(1)));
          continue;
        }
        if ("String_Node_Str".equals(name)) {
          entity=domainObjectResolver.resolve(RepositoryRestController.BASE_URI.get(),URI.create(jp.nextTextValue()));
          continue;
        }
        if ("String_Node_Str".equals(name)) {
          continue;
        }
        if ("String_Node_Str".equals(name)) {
          if ((tok=jp.nextToken()) == JsonToken.START_ARRAY) {
            while ((tok=jp.nextToken()) != JsonToken.END_ARRAY) {
            }
          }
 else {
            throw new HttpMessageNotReadableException("String_Node_Str");
          }
          continue;
        }
        if (null == attrMeta) {
          continue;
        }
        if (attrMeta.isCollectionLike()) {
          Collection c=attrMeta.asCollection(entity);
          if (null == c || c == Collections.emptyList()) {
            c=new ArrayList();
          }
          if ((tok=jp.nextToken()) == JsonToken.START_ARRAY) {
            do {
              Object cval=jp.readValueAs(attrMeta.elementType());
              c.add(cval);
            }
 while ((tok=jp.nextToken()) != JsonToken.END_ARRAY);
            val=c;
          }
 else           if (tok == JsonToken.VALUE_NULL) {
            val=null;
          }
 else {
            throw new HttpMessageNotReadableException("String_Node_Str" + tok + "String_Node_Str");
          }
        }
 else         if (attrMeta.isSetLike()) {
          Set s=attrMeta.asSet(entity);
          if (null == s || s == Collections.emptySet()) {
            s=new HashSet();
          }
          if ((tok=jp.nextToken()) == JsonToken.START_ARRAY) {
            do {
              Object sval=jp.readValueAs(attrMeta.elementType());
              s.add(sval);
            }
 while ((tok=jp.nextToken()) != JsonToken.END_ARRAY);
            val=s;
          }
 else           if (tok == JsonToken.VALUE_NULL) {
            val=null;
          }
 else {
            throw new HttpMessageNotReadableException("String_Node_Str" + tok + "String_Node_Str");
          }
        }
 else         if (attrMeta.isMapLike()) {
          Map m=attrMeta.asMap(entity);
          if (null == m || m == Collections.emptyMap()) {
            m=new HashMap();
          }
          if ((tok=jp.nextToken()) == JsonToken.START_OBJECT) {
            do {
              name=jp.getCurrentName();
              Object mkey=(name.startsWith("String_Node_Str") ? domainObjectResolver.resolve(RepositoryRestController.BASE_URI.get(),URI.create(name.substring(1))) : name);
              tok=jp.nextToken();
              Object mval=jp.readValueAs(attrMeta.elementType());
              m.put(mkey,mval);
            }
 while ((tok=jp.nextToken()) != JsonToken.END_OBJECT);
            val=m;
          }
 else           if (tok == JsonToken.VALUE_NULL) {
            val=null;
          }
 else {
            throw new HttpMessageNotReadableException("String_Node_Str" + tok + "String_Node_Str");
          }
        }
 else {
          if ((tok=jp.nextToken()) != JsonToken.VALUE_NULL) {
            val=jp.readValueAs(attrMeta.type());
          }
        }
        if (null != val) {
          attrMeta.set(val,entity);
        }
        break;
      }
  }
}
return entity;
}

Fixed version (ground truth):
@SuppressWarnings({"String_Node_Str"}) @Override public Object deserialize(JsonParser jp,DeserializationContext ctxt) throws IOException, JsonProcessingException {
  Object entity=BeanUtils.instantiateClass(getValueClass());
  for (JsonToken tok=jp.nextToken(); tok != JsonToken.END_OBJECT; tok=jp.nextToken()) {
    String name=jp.getCurrentName();
switch (tok) {
case FIELD_NAME:
{
        AttributeMetadata attrMeta=repoMeta.entityMetadata().attribute(name);
        Object val=null;
        if (name.startsWith("String_Node_Str")) {
          entity=domainObjectResolver.resolve(RepositoryRestController.BASE_URI.get(),URI.create(name.substring(1)));
          continue;
        }
        if ("String_Node_Str".equals(name)) {
          entity=domainObjectResolver.resolve(RepositoryRestController.BASE_URI.get(),URI.create(jp.nextTextValue()));
          continue;
        }
        if ("String_Node_Str".equals(name)) {
          continue;
        }
        if ("String_Node_Str".equals(name)) {
          if ((tok=jp.nextToken()) == JsonToken.START_ARRAY) {
            while ((tok=jp.nextToken()) != JsonToken.END_ARRAY) {
            }
          }
 else {
            throw new HttpMessageNotReadableException("String_Node_Str");
          }
          continue;
        }
        if (null == attrMeta) {
          continue;
        }
        if (attrMeta.isCollectionLike()) {
          Collection c=attrMeta.asCollection(entity);
          if (null == c || c == Collections.emptyList()) {
            c=new ArrayList();
          }
          if ((tok=jp.nextToken()) == JsonToken.START_ARRAY) {
            jp.nextToken();
            do {
              Object cval=jp.readValueAs(attrMeta.elementType());
              c.add(cval);
            }
 while ((tok=jp.nextToken()) != JsonToken.END_ARRAY);
            val=c;
          }
 else           if (tok == JsonToken.VALUE_NULL) {
            val=null;
          }
 else {
            throw new HttpMessageNotReadableException("String_Node_Str" + tok + "String_Node_Str");
          }
        }
 else         if (attrMeta.isSetLike()) {
          Set s=attrMeta.asSet(entity);
          if (null == s || s == Collections.emptySet()) {
            s=new HashSet();
          }
          if ((tok=jp.nextToken()) == JsonToken.START_ARRAY) {
            jp.nextToken();
            do {
              Object sval=jp.readValueAs(attrMeta.elementType());
              s.add(sval);
            }
 while ((tok=jp.nextToken()) != JsonToken.END_ARRAY);
            val=s;
          }
 else           if (tok == JsonToken.VALUE_NULL) {
            val=null;
          }
 else {
            throw new HttpMessageNotReadableException("String_Node_Str" + tok + "String_Node_Str");
          }
        }
 else         if (attrMeta.isMapLike()) {
          Map m=attrMeta.asMap(entity);
          if (null == m || m == Collections.emptyMap()) {
            m=new HashMap();
          }
          if ((tok=jp.nextToken()) == JsonToken.START_OBJECT) {
            do {
              name=jp.getCurrentName();
              Object mkey=(name.startsWith("String_Node_Str") ? domainObjectResolver.resolve(RepositoryRestController.BASE_URI.get(),URI.create(name.substring(1))) : name);
              tok=jp.nextToken();
              Object mval=jp.readValueAs(attrMeta.elementType());
              m.put(mkey,mval);
            }
 while ((tok=jp.nextToken()) != JsonToken.END_OBJECT);
            val=m;
          }
 else           if (tok == JsonToken.VALUE_NULL) {
            val=null;
          }
 else {
            throw new HttpMessageNotReadableException("String_Node_Str" + tok + "String_Node_Str");
          }
        }
 else {
          if ((tok=jp.nextToken()) != JsonToken.VALUE_NULL) {
            val=jp.readValueAs(attrMeta.type());
          }
        }
        if (null != val) {
          attrMeta.set(val,entity);
        }
        break;
      }
  }
}
return entity;
}