### Question:
DeterminismEvaluator { public static boolean isDeterministic(Expression expression, Metadata metadata) { return isDeterministic(expression, functionCall -> metadata.getFunctionMetadata(metadata.decodeFunction(functionCall.getName()))); } private  DeterminismEvaluator(); static boolean isDeterministic(Expression expression, Metadata metadata); static boolean isDeterministic(Expression expression, Function<FunctionCall, FunctionMetadata> functionMetadataSupplier);  }### Answer:
@Test public void testSanity() { assertFalse(DeterminismEvaluator.isDeterministic(function("rand"), metadata)); assertFalse(DeterminismEvaluator.isDeterministic(function("random"), metadata)); assertFalse(DeterminismEvaluator.isDeterministic(function("shuffle", ImmutableList.of(new ArrayType(VARCHAR)), ImmutableList.of(new NullLiteral())), metadata)); assertFalse(DeterminismEvaluator.isDeterministic(function("uuid"), metadata)); assertTrue(DeterminismEvaluator.isDeterministic(function("abs", ImmutableList.of(DOUBLE), ImmutableList.of(input("symbol"))), metadata)); assertFalse(DeterminismEvaluator.isDeterministic(function("abs", ImmutableList.of(DOUBLE), ImmutableList.of(function("rand"))), metadata)); assertTrue(DeterminismEvaluator.isDeterministic( function( "abs", ImmutableList.of(DOUBLE), ImmutableList.of(function("abs", ImmutableList.of(DOUBLE), ImmutableList.of(input("symbol"))))), metadata)); }