c.dup();
final Set<AtomicReference<BranchEnd>> tokenEnds = new HashSet<AtomicReference<BranchEnd>>();
final Map<State, AtomicReference<BranchEnd>> ends = new IdentityHashMap<State, AtomicReference<BranchEnd>>();
if (currentState.next.size() > 600) {
final LookupSwitchBuilder s = new LookupSwitchBuilder();
if (stateMachine.isHeader()) {
tokenEnds.add(s.add((byte) ':'));
}
tokenEnds.add(s.add((byte) ' '));
tokenEnds.add(s.add((byte) '\t'));
tokenEnds.add(s.add((byte) '\r'));
tokenEnds.add(s.add((byte) '\n'));
for (final State state : currentState.next.values()) {
ends.put(state, s.add(state.value));
}
c.lookupswitch(s);
final BranchEnd defaultSetup = s.getDefaultBranchEnd().get();
c.branchEnd(defaultSetup);
} else {
for (State state : currentState.next.values()) {
c.iconst(state.value);
ends.put(state, new AtomicReference<BranchEnd>(c.ifIcmpeq()));