// Path: src/iode/exceptions/LexerException.java
// @SuppressWarnings("serial")
// public class LexerException extends Exception {
//     public LexerException(String message, int line) {
//         super(message + " on line #" + line);
//     }
//     
//     public LexerException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/iode/util/Errors.java
// public class Errors
// {
//     @SuppressWarnings("unchecked")
//     private static <T extends Throwable> void throwException(Throwable exception, Object dummy) throws T
//     {
//         throw (T) exception;
//     }
// 
//     public static void throwException(Throwable exception)
//     {
//         Errors.<RuntimeException>throwException(exception, null);
//     }
// }


import java.util.ArrayList;
import iode.exceptions.LexerException;
import iode.util.Errors;
			} else if (code.charAt(pos) == ',') {
				pos++;
				tokens.add(new Token(TokenType.COMMA, ","));
			} else if (code.charAt(pos) == '(') {
				pos++;
				tokens.add(new Token(TokenType.LPAREN, "("));
			} else if (code.charAt(pos) == ')') {
				pos++;
				tokens.add(new Token(TokenType.RPAREN, ")"));
			} else if (code.charAt(pos) == '{') {
				pos++;
				tokens.add(new Token(TokenType.LBRACE, "{"));
			} else if (code.charAt(pos) == '}') {
				pos++;
				tokens.add(new Token(TokenType.RBRACE, "}"));
			} else if (code.charAt(pos) == '[') {
				pos++;
				tokens.add(new Token(TokenType.LBRACK, "["));
			} else if (code.charAt(pos) == ']') {
				pos++;
				tokens.add(new Token(TokenType.RBRACK, "]"));
			} else if (code.charAt(pos) == '=') {
				pos++;
				tokens.add(new Token(TokenType.EQUALS, "="));
			} else if (code.charAt(pos) == ':') {
				pos++;
				tokens.add(new Token(TokenType.COLON, ":"));
			} else if (code.charAt(pos) == '#') {
				pos++;
				
// Path: src/iode/exceptions/LexerException.java
// @SuppressWarnings("serial")
// public class LexerException extends Exception {
//     public LexerException(String message, int line) {
//         super(message + " on line #" + line);
//     }
//     
//     public LexerException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/iode/util/Errors.java
// public class Errors
// {
//     @SuppressWarnings("unchecked")
//     private static <T extends Throwable> void throwException(Throwable exception, Object dummy) throws T
//     {
//         throw (T) exception;
//     }
// 
//     public static void throwException(Throwable exception)
//     {
//         Errors.<RuntimeException>throwException(exception, null);
//     }
// }


// Path: src/iode/scanning/Lexer.java
import java.util.ArrayList;
import iode.exceptions.LexerException;
import iode.util.Errors;

			} else if (code.charAt(pos) == ',') {
				pos++;
				tokens.add(new Token(TokenType.COMMA, ","));
			} else if (code.charAt(pos) == '(') {
				pos++;
				tokens.add(new Token(TokenType.LPAREN, "("));
			} else if (code.charAt(pos) == ')') {
				pos++;
				tokens.add(new Token(TokenType.RPAREN, ")"));
			} else if (code.charAt(pos) == '{') {
				pos++;
				tokens.add(new Token(TokenType.LBRACE, "{"));
			} else if (code.charAt(pos) == '}') {
				pos++;
				tokens.add(new Token(TokenType.RBRACE, "}"));
			} else if (code.charAt(pos) == '[') {
				pos++;
				tokens.add(new Token(TokenType.LBRACK, "["));
			} else if (code.charAt(pos) == ']') {
				pos++;
				tokens.add(new Token(TokenType.RBRACK, "]"));
			} else if (code.charAt(pos) == '=') {
				pos++;
				tokens.add(new Token(TokenType.EQUALS, "="));
			} else if (code.charAt(pos) == ':') {
				pos++;
				tokens.add(new Token(TokenType.COLON, ":"));
			} else if (code.charAt(pos) == '#') {
				pos++;
				
				while (code.charAt(pos) != '#') {