### Question:
EnumUtils { public static MethodCallExpression call(Class clazz, String methodName, List<? extends Expression> arguments) { return call(clazz, methodName, arguments, null); } private  EnumUtils(); static MethodDeclaration overridingMethodDecl(Method method,
      Iterable<ParameterExpression> parameters,
      BlockStatement body); static Expression convert(Expression operand, Type toType); static Expression convert(Expression operand, Type fromType,
      Type toType); static T evaluate(Object o, Class<T> clazz); static MethodCallExpression call(Class clazz, String methodName,
      List<? extends Expression> arguments); static MethodCallExpression call(Class clazz, String methodName,
       List<? extends Expression> arguments, Expression targetExpression); static Enumerable<Object[]> sessionize(Enumerator<Object[]> inputEnumerator,
      int indexOfWatermarkedColumn, int indexOfKeyColumn, long gap); static Enumerable<Object[]> hopping(Enumerator<Object[]> inputEnumerator,
      int indexOfWatermarkedColumn, long emitFrequency, long windowSize, long offset); static Enumerable<TResult> tumbling(
      Enumerable<TSource> inputEnumerable,
      Function1<TSource, TResult> outSelector); static Expression generateCollatorExpression(SqlCollation collation); static final List<String> LEFT_RIGHT; }### Answer:
@Test void testMethodCallExpression() { final ConstantExpression arg0 = Expressions.constant(1, int.class); final ConstantExpression arg1 = Expressions.constant("x", String.class); final MethodCallExpression arrayMethodCall = EnumUtils.call(SqlFunctions.class, BuiltInMethod.ARRAY.getMethodName(), Arrays.asList(arg0, arg1)); assertThat(Expressions.toString(arrayMethodCall), is("org.apache.calcite.runtime.SqlFunctions.array(1, \"x\")")); final ConstantExpression nullLiteral = Expressions.constant(null); final MethodCallExpression xmlExtractMethodCall = EnumUtils.call( XmlFunctions.class, BuiltInMethod.EXTRACT_VALUE.getMethodName(), Arrays.asList(arg1, nullLiteral)); assertThat(Expressions.toString(xmlExtractMethodCall), is("org.apache.calcite.runtime.XmlFunctions.extractValue(\"x\", (String) null)")); final ConstantExpression arg2 = Expressions.constant(12.5, BigDecimal.class); final ConstantExpression arg3 = Expressions.constant(3, long.class); final MethodCallExpression modMethodCall = EnumUtils.call( SqlFunctions.class, "mod", Arrays.asList(arg2, arg3)); assertThat(Expressions.toString(modMethodCall), is("org.apache.calcite.runtime.SqlFunctions.mod(" + "java.math.BigDecimal.valueOf(125L, 1), " + "new java.math.BigDecimal(\n 3L))")); final ConstantExpression arg4 = Expressions.constant(1, int.class); final ConstantExpression arg5 = Expressions.constant(2, int.class); final MethodCallExpression geoMethodCall = EnumUtils.call( GeoFunctions.class, "ST_MakePoint", Arrays.asList(arg4, arg5)); assertThat(Expressions.toString(geoMethodCall), is("org.apache.calcite.runtime.GeoFunctions.ST_MakePoint(" + "new java.math.BigDecimal(\n 1), " + "new java.math.BigDecimal(\n 2))")); }