Source:
<code>public JSONParser(List<Byte[]> valueSeq) { factory = new JsonFactory(); this.valueSeq = valueSeq; atomic = new ArrayBackedValueStorage(); path = new ArrayBackedValueStorage(); abStack = new ArrayList<ArrayBuilder>(); obStack = new ArrayList<ObjectBuilder>(); abvsStack = new ArrayList<ArrayBackedValueStorage>(); keyStack = new ArrayList<ArrayBackedValueStorage>(); spStack = new ArrayList<UTF8StringPointable>(); itemStack = new ArrayList<itemType>(); svb = new StringValueBuilder(); sb = new SequenceBuilder(); allKeys = new ArrayList<Byte[]>(); abvsStack.add(atomic); out = abvsStack.get(abvsStack.size() - 1).getDataOutput(); paths = new ArrayList<Byte[]>(); tempABVS = new ArrayBackedValueStorage(); this.objectMatchLevel = 1; this.arrayMatchLevel = 0; matched = false; literal = false; arrayCounters = new ArrayList<Integer>(); outputStream = new ByteArrayOutputStream(); this.keysOrMembers = new ArrayList<Boolean>(); path.reset(); if (valueSeq != null) { for (int i = 0; i < this.valueSeq.size(); i++) { TaggedValuePointable tvp = new TaggedValuePointable(); tvp.set(ArrayUtils.toPrimitive(valueSeq.get(i)), 0, ArrayUtils.toPrimitive(valueSeq.get(i)).length); if (tvp.getTag() == ValueTag.XS_INTEGER_TAG) { outputStream.write(tvp.getByteArray(), 0, tvp.getLength()); this.arrayMatchLevel++; this.keysOrMembers.add(Boolean.valueOf(true)); } else if (tvp.getTag() == ValueTag.XS_BOOLEAN_TAG) { outputStream.write(tvp.getByteArray(), 0, tvp.getLength()); this.arrayMatchLevel++; this.keysOrMembers.add(Boolean.valueOf(false)); } else { outputStream.write(tvp.getByteArray(), 1, tvp.getLength() - 1); } } <START> TaggedValuePointable tempTvp = new TaggedValuePointable(); <END> tempTvp.set(outputStream.toByteArray(), 0, outputStream.size()); path.append(tempTvp); } }</code><technical_language>create object reuse parser</technical_language>

Target:
public JSONParser(List<Byte[]> valueSeq) { factory = new JsonFactory(); this.valueSeq = valueSeq; atomic = new ArrayBackedValueStorage(); tvp = new TaggedValuePointable(); abStack = new ArrayList<ArrayBuilder>(); obStack = new ArrayList<ObjectBuilder>(); abvsStack = new ArrayList<ArrayBackedValueStorage>(); keyStack = new ArrayList<ArrayBackedValueStorage>(); spStack = new ArrayList<UTF8StringPointable>(); itemStack = new ArrayList<itemType>(); svb = new StringValueBuilder(); sb = new SequenceBuilder(); bp = new BooleanPointable(); allKeys = new ArrayList<Byte[]>(); abvsStack.add(atomic); out = abvsStack.get(abvsStack.size() - 1).getDataOutput(); tempABVS = new ArrayBackedValueStorage(); this.objectMatchLevel = 1; this.arrayMatchLevel = 0; matched = false; literal = false; arrayCounters = new ArrayList<Integer>(); outputStream = new ByteArrayOutputStream(); prefixStream = new ByteArrayOutputStream(); pathStream = new ByteArrayOutputStream(); this.keysOrMembers = new ArrayList<Boolean>(); outputStream.reset(); pathStream.reset(); if (valueSeq != null) { for (int i = 0; i < this.valueSeq.size(); i++) { tvp.set(ArrayUtils.toPrimitive(valueSeq.get(i)), 0, ArrayUtils.toPrimitive(valueSeq.get(i)).length); if (tvp.getTag() == ValueTag.XS_INTEGER_TAG) { pathStream.write(tvp.getByteArray(), 0, tvp.getLength()); this.arrayMatchLevel++; this.keysOrMembers.add(Boolean.valueOf(true)); } else if (tvp.getTag() == ValueTag.XS_BOOLEAN_TAG) { pathStream.write(tvp.getByteArray(), 0, tvp.getLength()); this.arrayMatchLevel++; this.keysOrMembers.add(Boolean.valueOf(false)); } else { pathStream.write(tvp.getByteArray(), 1, tvp.getLength() - 1); } } } }