import lexer_example
@with_lexer(foo_lexer)
grammar foo_grammar {
    @main_rule main_rule <- Scope+(name)
    name <- Name(@identifier)

}

@abstract class FooNode : Node {

    @export fun prop (empty1 : Bool, empty2 : Bool): Bool = {
        val arg1 = if empty1 then _ else node.children_env();
        val arg2 = if empty2 then _ else node.children_env();

        arg1.is_visible_from(arg2)
    }
}

class Scope : ASTList[Name] {
}

@has_abstract_list class Name : FooNode implements TokenNode {
}
