Program: 29635
Project: 29635
Buggy source:
public Response response(ObjectNode node,String location,ParseResult result){
  if (node == null)   return null;
  Response output=new Response();
  JsonNode ref=node.get("String_Node_Str");
  if (ref != null) {
    if (ref.getNodeType().equals(JsonNodeType.STRING)) {
      return refResponse((TextNode)ref,location,result);
    }
 else {
      result.invalidType(location,"String_Node_Str","String_Node_Str",node);
      return null;
    }
  }
  String value=getString("String_Node_Str",node,true,location,result);
  output.description(value);
  ObjectNode schema=getObject("String_Node_Str",node,false,location,result);
  if (schema != null) {
    JsonNode schemaRef=schema.get("String_Node_Str");
    if (schemaRef != null) {
      if (schemaRef.getNodeType().equals(JsonNodeType.STRING)) {
        String mungedRef=mungedRef(schemaRef.textValue());
        if (mungedRef != null) {
          schema.put("String_Node_Str",mungedRef);
          schemaRef=schema.get("String_Node_Str");
        }
        Model schemaProp=new RefModel(schemaRef.textValue());
        output.responseSchema(schemaProp);
      }
 else {
        result.invalidType(location,"String_Node_Str","String_Node_Str",node);
      }
    }
 else {
      output.responseSchema(Json.mapper().convertValue(schema,Model.class));
    }
  }
  ObjectNode headersNode=getObject("String_Node_Str",node,false,location,result);
  if (headersNode != null) {
    Map<String,Property> headers=Json.mapper().convertValue(headersNode,Json.mapper().getTypeFactory().constructMapType(Map.class,String.class,Property.class));
    output.headers(headers);
  }
  ObjectNode examplesNode=getObject("String_Node_Str",node,false,location,result);
  if (examplesNode != null) {
    Map<String,Object> examples=Json.mapper().convertValue(examplesNode,Json.mapper().getTypeFactory().constructMapType(Map.class,String.class,Object.class));
    output.setExamples(examples);
  }
  Set<String> keys=getKeys(node);
  for (  String key : keys) {
    if (key.startsWith("String_Node_Str")) {
      output.setVendorExtension(key,extension(node.get(key)));
    }
 else     if (!RESPONSE_KEYS.contains(key)) {
      result.extra(location,key,node.get(key));
    }
  }
  return output;
}

Fixed version (ground truth):
public Response response(ObjectNode node,String location,ParseResult result){
  if (node == null)   return null;
  Response output=new Response();
  JsonNode ref=node.get("String_Node_Str");
  if (ref != null) {
    if (ref.getNodeType().equals(JsonNodeType.STRING)) {
      return refResponse((TextNode)ref,location,result);
    }
 else {
      result.invalidType(location,"String_Node_Str","String_Node_Str",node);
      return null;
    }
  }
  String value=getString("String_Node_Str",node,true,location,result);
  output.description(value);
  ObjectNode schema=getObject("String_Node_Str",node,false,location,result);
  if (schema != null) {
    JsonNode schemaRef=schema.get("String_Node_Str");
    if (schemaRef != null) {
      if (schemaRef.getNodeType().equals(JsonNodeType.STRING)) {
        Model schemaProp=new RefModel(schemaRef.textValue());
        output.responseSchema(schemaProp);
      }
 else {
        result.invalidType(location,"String_Node_Str","String_Node_Str",node);
      }
    }
 else {
      output.responseSchema(Json.mapper().convertValue(schema,Model.class));
    }
  }
  ObjectNode headersNode=getObject("String_Node_Str",node,false,location,result);
  if (headersNode != null) {
    Map<String,Property> headers=Json.mapper().convertValue(headersNode,Json.mapper().getTypeFactory().constructMapType(Map.class,String.class,Property.class));
    output.headers(headers);
  }
  ObjectNode examplesNode=getObject("String_Node_Str",node,false,location,result);
  if (examplesNode != null) {
    Map<String,Object> examples=Json.mapper().convertValue(examplesNode,Json.mapper().getTypeFactory().constructMapType(Map.class,String.class,Object.class));
    output.setExamples(examples);
  }
  Set<String> keys=getKeys(node);
  for (  String key : keys) {
    if (key.startsWith("String_Node_Str")) {
      output.setVendorExtension(key,extension(node.get(key)));
    }
 else     if (!RESPONSE_KEYS.contains(key)) {
      result.extra(location,key,node.get(key));
    }
  }
  return output;
}