Program: 65727
Project: 65727
Buggy source:
@Override protected List<Attribute> attributes(){
  if (null == attributes) {
    if (tree.getType() == JSONLexer.NULL) {
      attributes=new ArrayList<Attribute>(1);
      attributes.add(new Attribute(XMLConstants.SCHEMA_INSTANCE_URL,XMLConstants.SCHEMA_NIL_ATTRIBUTE,XMLConstants.SCHEMA_NIL_ATTRIBUTE,"String_Node_Str"));
      return attributes;
    }
    if (tree.getType() == JSONLexer.OBJECT) {
      attributes=new ArrayList<Attribute>(tree.getChildCount());
      for (int x=0; x < tree.getChildCount(); x++) {
        Tree childTree=tree.getChild(x);
        String attributeLocalName=childTree.getChild(0).getText().substring(1,childTree.getChild(0).getText().length() - 1);
        if (attributePrefix != null) {
          if (attributeLocalName.startsWith(attributePrefix)) {
            attributeLocalName=attributeLocalName.substring(attributePrefix.length());
          }
 else {
            break;
          }
        }
        Tree childValueTree=childTree.getChild(1);
switch (childValueTree.getType()) {
case JSONLexer.STRING:
{
            String stringValue=childValueTree.getChild(0).getText();
            attributes.add(new Attribute("String_Node_Str",attributeLocalName,attributeLocalName,stringValue.substring(1,stringValue.length() - 1)));
            break;
          }
case JSONLexer.NUMBER:
{
          attributes.add(new Attribute("String_Node_Str",attributeLocalName,attributeLocalName,childValueTree.getChild(0).getText()));
          break;
        }
case JSONLexer.TRUE:
{
        attributes.add(new Attribute("String_Node_Str",attributeLocalName,attributeLocalName,TRUE));
        break;
      }
case JSONLexer.FALSE:
{
      attributes.add(new Attribute("String_Node_Str",attributeLocalName,attributeLocalName,FALSE));
      break;
    }
case JSONLexer.NULL:
{
    attributes.add(new Attribute("String_Node_Str",attributeLocalName,attributeLocalName,"String_Node_Str"));
    break;
  }
}
}
}
 else {
attributes=Collections.EMPTY_LIST;
}
}
return attributes;
}

Fixed version (ground truth):
@Override protected List<Attribute> attributes(){
  if (null == attributes) {
    if (tree.getType() == JSONLexer.NULL) {
      attributes=new ArrayList<Attribute>(1);
      attributes.add(new Attribute(XMLConstants.SCHEMA_INSTANCE_URL,XMLConstants.SCHEMA_NIL_ATTRIBUTE,XMLConstants.SCHEMA_NIL_ATTRIBUTE,"String_Node_Str"));
      return attributes;
    }
    if (tree.getType() == JSONLexer.OBJECT) {
      attributes=new ArrayList<Attribute>(tree.getChildCount());
      for (int x=0; x < tree.getChildCount(); x++) {
        Tree childTree=tree.getChild(x);
        String attributeLocalName=childTree.getChild(0).getText().substring(1,childTree.getChild(0).getText().length() - 1);
        if (attributePrefix != null) {
          if (attributeLocalName.startsWith(attributePrefix)) {
            attributeLocalName=attributeLocalName.substring(attributePrefix.length());
          }
 else {
            break;
          }
        }
        String uri=XMLConstants.EMPTY_STRING;
        if (namespaceAware && namespaces != null) {
          int nsIndex=attributeLocalName.indexOf(namespaceSeperator);
          if (nsIndex > -1) {
            String prefix=attributeLocalName.substring(0,nsIndex);
            attributeLocalName=attributeLocalName.substring(nsIndex + namespaceSeperator.length());
            uri=namespaces.resolveNamespacePrefix(prefix);
          }
        }
        Tree childValueTree=childTree.getChild(1);
switch (childValueTree.getType()) {
case JSONLexer.STRING:
{
            String stringValue=childValueTree.getChild(0).getText();
            attributes.add(new Attribute(uri,attributeLocalName,attributeLocalName,stringValue.substring(1,stringValue.length() - 1)));
            break;
          }
case JSONLexer.NUMBER:
{
          attributes.add(new Attribute(uri,attributeLocalName,attributeLocalName,childValueTree.getChild(0).getText()));
          break;
        }
case JSONLexer.TRUE:
{
        attributes.add(new Attribute(uri,attributeLocalName,attributeLocalName,TRUE));
        break;
      }
case JSONLexer.FALSE:
{
      attributes.add(new Attribute(uri,attributeLocalName,attributeLocalName,FALSE));
      break;
    }
case JSONLexer.NULL:
{
    attributes.add(new Attribute(uri,attributeLocalName,attributeLocalName,XMLConstants.EMPTY_STRING));
    break;
  }
}
}
}
 else {
attributes=Collections.EMPTY_LIST;
}
}
return attributes;
}