public static ArrayList<Node> extractParameters(Node node) {
        ArrayList<Node> parameters = new ArrayList<Node>();

        if (node.getToken() != null
            && (node.getToken().getType() == TokenType.KW_LET
               || node.getToken().getType() == TokenType.KW_LET_STAR
               || node.getToken().getType() == TokenType.KW_LETREC))
        {
            parameters.add(node.getCdr());
            node = node.getCdr().getCdr();
        }

        while ((node = node.getCdr()) != null) {
            // If it gets into this block, it means that it is a list, so execute it and get the results
            if (node.getToken() == null) {
                ArrayList<Node> results = execute(node.getCar());
                parameters.addAll(results);
            }
            else {
                parameters.add(node);

                if (node.getToken().getType() == TokenType.SS_QUOTE) {
                    node = node.getCdr();
                }
            }
        }

        return parameters;
    }