private static int decodeField(
final DirectBuffer buffer,
final int bufferIndex,
final List<Token> tokens,
final int fromIndex,
final int actingVersion,
final TokenListener listener)
{
final int toIndex = findNextOrLimit(tokens, fromIndex + 1, tokens.size(), Signal.END_FIELD);
final Token fieldToken = tokens.get(fromIndex);
final Token typeToken = tokens.get(fromIndex + 1);
final int offset = typeToken.offset();
switch (typeToken.signal())
{
case BEGIN_COMPOSITE:
decodeComposite(
fieldToken, buffer, bufferIndex + offset, tokens, fromIndex + 1, toIndex - 1, actingVersion, listener);
break;
case BEGIN_ENUM:
listener.onEnum(fieldToken, buffer, bufferIndex + offset, tokens, fromIndex + 1, toIndex - 1, actingVersion);
break;
case BEGIN_SET:
listener.onBitSet(fieldToken, buffer, bufferIndex + offset, tokens, fromIndex + 1, toIndex - 1, actingVersion);
break;
case ENCODING:
listener.onEncoding(fieldToken, buffer, bufferIndex + offset, typeToken, actingVersion);
break;
}
return toIndex;
}