class ExpressionTypeManager extends DefaultAstVisitor<Expression, ExpressionTypeManager.ExpressionTypeContext> {

  public Schema getExpressionType(final Expression expression) {
    ExpressionTypeContext expressionTypeContext = new ExpressionTypeContext();
    process(expression, expressionTypeContext);
    return expressionTypeContext.getSchema();
  }

  public  ExpressionTypeManager(Schema schema, final FunctionRegistry functionRegistry);

}