     t.rule(["scopeStatement": .simple("statement")]) {
         try $0.val("statement")
     }
-//
-//    t.rule(["anonSubject": .simple("subject"), "args": .series("args")]) {
-//        .callAnonymous(closure: try $0.val("subject"), arguments: try $0.vals("args"))
-//    }
-//
-//    t.rule(["anonSubject": .simple("subject")]) {
-//        .callAnonymous(closure: try $0.val("subject"), arguments: [])
-//    }
-//
-//    t.rule(["functionName": .simple("name"), "args": .series("args")]) {
-//        .call(name: try $0.str("name"), arguments: try $0.vals("args"))
-//    }
-//
-//    t.rule(["subject": .simple("subject"), "calls": .series("calls")]) {
-//        let subject = try $0.val("subject")
-//        var calls = try $0.vals("calls")
-//        guard calls.count > 0 else { throw SongTransformError.notAFunction }
-//        let firstCall = calls.removeFirst()
-//        guard case let .call(call) = firstCall else { throw SongTransformError.notAFunction }
-//        let arguments = [subject] + call.arguments
-//        let firstFuncCall = Expression.call(name: call.name, arguments: arguments)
-//        return try calls.reduce(firstFuncCall) { acc, next in
-//            guard case .call(let name, var arguments) = next else {
-//                throw SongTransformError.notAFunction
-//            }
-//            arguments.insert(acc, at: 0)
-//            return Expression.call(name: name, arguments: arguments)
-//        }
-//    }
 
     // Function declarations.
-
-    t.rule(["param": .simple("param")]) {
-        try $0.val("param")
-    }
 
     t.rule(["subject": .simple("subject"), "functionName": .simple("name"), "guard": .simple("guard"), "body": .simple("body")]) {
         .subfunction(try transformFunction(args: $0))

        try $0.val("call")
    }

    t.rule(["dotCall": .simple("call")]) {
        try $0.val("call")
    }

    t.rule(["trailCalls": .series("calls")]) {
        try reduce(try $0.vals("calls"))
    }

    //    t.rule(["trailCalls": .simple("call")]) {
    //        try $0.val("call")
    //    }

    t.rule(["dotCall": .series("calls")]) {
        try reduce(try $0.vals("calls"))
    }

    }

    t.rule(["functionName": .simple("name"), "body": .simple("body"), "guard": .simple("guard"), "params": .series("params")]) {
        .subfunction(try transformFunction(args: $0))
    }

