Object do (
    super = method(
        return self parent
    )

    eval = method(code, context,
        Parser parse(code) eval(context ifNone(Root))
    )

    list = block(
        return (List clone(call message evalArgs(call sender)))
    )

    dict = block(
        d = Dict clone
        call message args foreach(arg,
            arg eval(d)
        )
        d
    )


    set("[]", get("list"))
    set("{}", get("dict"))

    set("?",
        block(
            name = call message args at(0) name
            call target has(name) ifTrue(
                call target get(name)
            ) ifFalse(
                None
            )
        )
    )

    range = method(Range clone(call message evalArgs(call sender)))

    with = block(
        obj = call message arg(0, call sender)
        res = call message arg(1, call sender)
        obj close
        res
    )

    open = block(filename,
        return File clone open(filename)
    )
)
