proposal DoExpression{
    case arrowFunction{
        applicable to {
            "() => {
                <<statements: (Statement && !ReturnStatement)+>>
                return <<returnVal : Expression>>;
            }
            "
        }
        transform to {
            "(do {
                <<statements>>
                <<returnVal>>
            })"
        }
    }

    case immediatelyInvokedUnnamedFunction {
        applicable to {
            "(function(){
                <<statements: (Statement && !ReturnStatement)+>>
                return <<returnVal : Expression>>;
            })();"
        }

        transform to {
            "(do {
                <<statements>>
                <<returnVal>>
            })"
        }
    }
}