private ByteBuffer BuildSwitchStatementTables(Parser parser) { ByteBuffer output = new Crayon.ByteBuffer(); List<Dictionary<int, int>> intSwitches = parser.GetIntegerSwitchStatements(); for (int i = 0; i < intSwitches.Count; ++i) { List<int> args = new List<int>(); Dictionary<int, int> lookup = intSwitches[i]; foreach (int key in lookup.Keys) { int offset = lookup[key]; args.Add(key); args.Add(offset); } output.Add(null, OpCode.BUILD_SWITCH_INT, args.ToArray()); } List<Dictionary<string, int>> stringSwitches = parser.GetStringSwitchStatements(); for (int i = 0; i < stringSwitches.Count; ++i) { Dictionary<string, int> lookup = stringSwitches[i]; foreach (string key in lookup.Keys) { int offset = lookup[key]; output.Add(null, OpCode.BUILD_SWITCH_STRING, key, i, offset); } } return output; }