private Token _resolve(Dictionary<string, TokenType> types, string value, bool shouldThrow = false) { TokenType type; if(types.TryGetValue(value, out type)) { return new Token(type, value); } else if(shouldThrow) { throw new InvalidDataException(value); } else { return null; } }