public Type resolve(@NotNull Scope s, int tag) {
        Type val = resolveExpr(context_expr, s, tag);
        NameBinder.bind(s, optional_vars, val, tag);
        return resolveExpr(body, s, tag);
    }