public byte[] createTokenizer(final String existingClassName, final String[] httpVerbs, String[] httpVersions, String[] standardHeaders) {
final String className = existingClassName + CLASS_NAME_SUFFIX;
final ClassFile file = new ClassFile(className, existingClassName);
final ClassMethod ctor = file.addMethod(AccessFlag.PUBLIC, "<init>", "V", DescriptorUtils.parameterDescriptors(constructorDescriptor));
ctor.getCodeAttribute().aload(0);
ctor.getCodeAttribute().loadMethodParameters();
ctor.getCodeAttribute().invokespecial(existingClassName, "<init>", constructorDescriptor);
ctor.getCodeAttribute().returnInstruction();
final ClassMethod sctor = file.addMethod(AccessFlag.PUBLIC | AccessFlag.STATIC, "<clinit>", "V");
final AtomicInteger fieldCounter = new AtomicInteger(1);
sctor.getCodeAttribute().invokestatic(existingClassName, "httpStrings", "()" + DescriptorUtils.makeDescriptor(Map.class));
sctor.getCodeAttribute().astore(CONSTRUCTOR_HTTP_STRING_MAP_VAR);
createStateMachines(httpVerbs, httpVersions, standardHeaders, className, file, sctor, fieldCounter);
sctor.getCodeAttribute().returnInstruction();
return file.toBytecode();
}