### Question:
TransformExpressionTree { public static TransformExpressionTree compileToExpressionTree(String expression) { return COMPILER.compileToExpressionTree(expression); } TransformExpressionTree(AstNode root);  TransformExpressionTree(ExpressionType expressionType, String value,
      @Nullable List<TransformExpressionTree> children); static TransformExpressionTree compileToExpressionTree(String expression); static String standardizeExpression(String expression); static String getStandardExpression(AstNode astNode); ExpressionType getExpressionType(); String getValue(); void setValue(String value); List<TransformExpressionTree> getChildren(); boolean isColumn(); boolean isFunction(); boolean isLiteral(); void getColumns(Set<String> columns); @Override int hashCode(); @Override boolean equals(Object obj); @Override String toString();  }### Answer:
@Test public void testWhiteSpace() { String expression = " \t foo\t ( bar ('a'\t ,foobar( b, 'c' \t, '123') ) ,d )\t"; Assert.assertTrue(equalsWithStandardExpressionTree(TransformExpressionTree.compileToExpressionTree(expression))); expression = "foo(bar(' a',foobar(b,'c','123')),d)"; Assert.assertFalse(equalsWithStandardExpressionTree(TransformExpressionTree.compileToExpressionTree(expression))); expression = "foo(bar('a',foobar(b,'c\t','123')),d)"; Assert.assertFalse(equalsWithStandardExpressionTree(TransformExpressionTree.compileToExpressionTree(expression))); }
@Test public void testQuoteOnLiteral() { String expression = "foo(bar('a',foobar(b,'c',123)),d)"; Assert.assertTrue(equalsWithStandardExpressionTree(TransformExpressionTree.compileToExpressionTree(expression))); expression = "foo(bar(\"a\",foobar(b,\"c\",\"123\")),d)"; Assert.assertTrue(equalsWithStandardExpressionTree(TransformExpressionTree.compileToExpressionTree(expression))); }
@Test public void testUpperCase() { String expression = "foO(bAr('a',FOoBar(b,'c',123)),d)"; Assert.assertTrue(equalsWithStandardExpressionTree(TransformExpressionTree.compileToExpressionTree(expression))); }