}
void parse(final JsonListener jsonListener, final StajParser stajParser) throws InvalidSyntaxException {
try {
while (stajParser.hasNext()) {
final JsonStreamElement jsonStreamElement = stajParser.next();
switch (jsonStreamElement.jsonStreamElementType()) {
case START_DOCUMENT:
jsonListener.startDocument();
break;
case END_DOCUMENT:
jsonListener.endDocument();
break;
case START_ARRAY:
jsonListener.startArray();
break;
case END_ARRAY:
jsonListener.endArray();
break;
case START_OBJECT:
jsonListener.startObject();
break;
case END_OBJECT:
jsonListener.endObject();
break;
case START_FIELD:
jsonListener.startField(jsonStreamElement.text());
break;
case END_FIELD:
jsonListener.endField();
break;
case NULL:
jsonListener.nullValue();
break;
case TRUE:
jsonListener.trueValue();
break;
case FALSE:
jsonListener.falseValue();
break;
case STRING:
jsonListener.stringValue(jsonStreamElement.text());
break;
case NUMBER:
jsonListener.numberValue(jsonStreamElement.text());
break;
default:
throw new IllegalStateException("Got a JsonStreamElement of unexpected type: " + jsonStreamElement);
}
}