Program: 101905
Project: 101905
Buggy source:
public <T>T build(Builder<T> aBuilder){
  try {
    Builder _b=aBuilder;
    builders.push(_b);
    _b.prepare(this);
    JsonToken _token=null;
    while ((_token=reader.peek()) != null) {
switch (_token) {
case NAME:
        names.push(reader.nextName());
      break;
case STRING:
    Builder<?> _p=_b.moveDown(this);
  if (_p == null)   _p=builders.peek();
_p.prepare(this);
_p.setValue(this,"String_Node_Str",reader.nextString());
if (_b.isArray()) _b.setValue(this,"String_Node_Str",_p.build(this));
 else _b.setValue(this,names.pop(),_p.build(this));
break;
case NUMBER:
_p=_b.moveDown(this);
if (_p == null) _p=builders.peek();
_p.prepare(this);
_p.setValue(this,"String_Node_Str",reader.nextDouble());
String _name="String_Node_Str";
try {
if (_b.isArray()) _b.setValue(this,"String_Node_Str",_p.build(this));
 else _b.setValue(this,_name=names.pop(),_p.build(this));
}
 catch (ClassCastException anExc) {
throw new ParsingException("String_Node_Str" + _name + "String_Node_Str"+ _b.getName().getName()+ "String_Node_Str",anExc);
}
break;
case BOOLEAN:
_p=_b.moveDown(this);
if (_p == null) _p=builders.peek();
_p.prepare(this);
_p.setValue(this,"String_Node_Str",reader.nextBoolean());
_name="String_Node_Str";
try {
if (_b.isArray()) _b.setValue(this,"String_Node_Str",_p.build(this));
 else _b.setValue(this,_name=names.pop(),_p.build(this));
}
 catch (ClassCastException anExc) {
throw new ParsingException("String_Node_Str" + _name + "String_Node_Str"+ _b.getName().getName()+ "String_Node_Str",anExc);
}
break;
case NULL:
reader.nextNull();
names.pop();
case BEGIN_ARRAY:
reader.beginArray();
_b=_b.moveDown(this);
if (_b == null) {
_b=builders.peek();
if (reader.peek() == JsonToken.END_ARRAY) reader.endArray();
 else reader.skipValue();
}
 else {
_b.prepare(this);
builders.push(_b);
}
break;
case END_ARRAY:
reader.endArray();
_p=builders.pop();
_b=builders.peek();
if (_b.isArray()) _b.setValue(this,"String_Node_Str",_p.build(this));
 else _b.setValue(this,names.pop(),_p.build(this));
break;
case BEGIN_OBJECT:
reader.beginObject();
_b=_b.moveDown(this);
if (_b == null) {
_b=builders.peek();
}
 else {
_b.prepare(this);
builders.push(_b);
}
break;
case END_OBJECT:
reader.endObject();
_p=builders.pop();
if (!builders.isEmpty()) {
_b=builders.peek();
if (_b.isArray()) _b.setValue(this,"String_Node_Str",_p.build(this));
 else _b.setValue(this,names.pop(),_p.build(this));
}
break;
case END_DOCUMENT:
return aBuilder.build(this);
}
}
return aBuilder.build(this);
}
 catch (ParsingException anExc) {
throw anExc;
}
catch (Exception anExc) {
throw new ParsingException(anExc);
}
}

Fixed version (ground truth):
public <T>T build(Builder<T> aBuilder){
  try {
    Builder _b=aBuilder;
    builders.push(_b);
    _b.prepare(this);
    JsonToken _token=null;
    while ((_token=reader.peek()) != null) {
switch (_token) {
case NAME:
        names.push(reader.nextName());
      break;
case STRING:
    Builder<?> _p=_b.moveDown(this);
  if (_p == null)   _p=builders.peek();
_p.prepare(this);
_p.setValue(this,"String_Node_Str",reader.nextString());
if (_b.isArray()) _b.setValue(this,"String_Node_Str",_p.build(this));
 else _b.setValue(this,names.pop(),_p.build(this));
break;
case NUMBER:
_p=_b.moveDown(this);
if (_p == null) _p=builders.peek();
_p.prepare(this);
_p.setValue(this,"String_Node_Str",reader.nextDouble());
String _name="String_Node_Str";
try {
if (_b.isArray()) _b.setValue(this,"String_Node_Str",_p.build(this));
 else _b.setValue(this,_name=names.pop(),_p.build(this));
}
 catch (ClassCastException anExc) {
throw new ParsingException("String_Node_Str" + _name + "String_Node_Str"+ _b.getName().getName()+ "String_Node_Str",anExc);
}
break;
case BOOLEAN:
_p=_b.moveDown(this);
if (_p == null) _p=builders.peek();
_p.prepare(this);
_p.setValue(this,"String_Node_Str",reader.nextBoolean());
_name="String_Node_Str";
try {
if (_b.isArray()) _b.setValue(this,"String_Node_Str",_p.build(this));
 else _b.setValue(this,_name=names.pop(),_p.build(this));
}
 catch (ClassCastException anExc) {
throw new ParsingException("String_Node_Str" + _name + "String_Node_Str"+ _b.getName().getName()+ "String_Node_Str",anExc);
}
break;
case NULL:
reader.nextNull();
names.pop();
break;
case BEGIN_ARRAY:
reader.beginArray();
_b=_b.moveDown(this);
if (_b == null) {
_b=builders.peek();
if (reader.peek() == JsonToken.END_ARRAY) reader.endArray();
 else reader.skipValue();
}
 else {
_b.prepare(this);
builders.push(_b);
}
break;
case END_ARRAY:
reader.endArray();
_p=builders.pop();
_b=builders.peek();
if (_b.isArray()) _b.setValue(this,"String_Node_Str",_p.build(this));
 else _b.setValue(this,names.pop(),_p.build(this));
break;
case BEGIN_OBJECT:
reader.beginObject();
_b=_b.moveDown(this);
if (_b == null) {
_b=builders.peek();
}
 else {
_b.prepare(this);
builders.push(_b);
}
break;
case END_OBJECT:
reader.endObject();
_p=builders.pop();
if (!builders.isEmpty()) {
_b=builders.peek();
if (_b.isArray()) _b.setValue(this,"String_Node_Str",_p.build(this));
 else _b.setValue(this,names.pop(),_p.build(this));
}
break;
case END_DOCUMENT:
return aBuilder.build(this);
}
}
return aBuilder.build(this);
}
 catch (ParsingException anExc) {
throw anExc;
}
catch (Exception anExc) {
throw new ParsingException(anExc);
}
}