protected void createStateMachine(final String[] originalItems, final String className, final ClassFile file, final ClassMethod sctor, final AtomicInteger fieldCounter, final String methodName, final CustomStateMachine stateMachine, boolean expectNewline) {
final List<State> allStates = new ArrayList<State>();
final State initial = new State((byte) 0, "");
for (String value : originalItems) {
addStates(initial, value, allStates);
}
final AtomicInteger stateCounter = new AtomicInteger(-1);
setupStateNo(initial, stateCounter, fieldCounter);
for (State state : allStates) {
setupStateNo(state, stateCounter, fieldCounter);
createStateField(state, file, sctor.getCodeAttribute());
}
final int noStates = stateCounter.get();
final ClassMethod handle = file.addMethod(Modifier.PROTECTED | Modifier.FINAL, methodName, "V", DescriptorUtils.makeDescriptor(ByteBuffer.class), parseStateDescriptor, httpExchangeDescriptor);
handle.addCheckedExceptions(BAD_REQUEST_EXCEPTION);
writeStateMachine(className, file, handle.getCodeAttribute(), initial, allStates, noStates, stateMachine, expectNewline);
}