class DesugarTryExpressionRewriter {

    public static Expression rewrite(Expression expression, Metadata metadata, TypeAnalyzer typeAnalyzer, Session session, SymbolAllocator symbolAllocator)
    {
        if (expression instanceof SymbolReference) {
            return expression;
        }

        Map<NodeRef<Expression>, Type> expressionTypes = typeAnalyzer.getTypes(
                session,
                symbolAllocator.getTypes(),
                expression);

        return ExpressionTreeRewriter.rewriteWith(new Visitor(metadata, expressionTypes), expression);
    }

    private  DesugarTryExpressionRewriter();

}