### Question:
EvalTreeUtil { public static LinkedHashSet<Column> findUniqueColumns(EvalNode node) { UniqueColumnFinder finder = new UniqueColumnFinder(); node.postOrder(finder); return finder.getColumnRefs(); }  static void changeColumnRef(EvalNode node, String oldName, String newName); static void replace(EvalNode expr, EvalNode targetExpr, EvalNode tobeReplaced); static LinkedHashSet<Column> findUniqueColumns(EvalNode node); static List<Column> findAllColumnRefs(EvalNode node); static Schema getSchemaByTargets(Schema inputSchema, Target [] targets); static DataType getDomainByExpr(Schema inputSchema, EvalNode expr); static Collection<EvalNode> getContainExpr(EvalNode expr, Column target); static Map<EvalType, Integer> getExprCounters(EvalNode expr); static boolean containColumnRef(EvalNode expr, Column target); static boolean isJoinQual(EvalNode expr, boolean includeThetaJoin); static Set<AggregationFunctionCallEval> findDistinctAggFunction(EvalNode expr); static Collection<T> findEvalsByType(EvalNode evalNode, EvalType type); static boolean checkIfCanBeConstant(EvalNode evalNode); static Datum evaluateImmediately(EvalNode evalNode);  }### Answer:
@Test public final void testFindAllRefColumns() { Set<Column> set = EvalTreeUtil.findUniqueColumns(expr1); assertEquals(1, set.size()); assertTrue(set.contains(new Column("default.people.score", TajoDataTypes.Type.INT4))); set = EvalTreeUtil.findUniqueColumns(expr2); assertEquals(2, set.size()); assertTrue(set.contains(new Column("default.people.score", TajoDataTypes.Type.INT4))); assertTrue(set.contains(new Column("default.people.age", TajoDataTypes.Type.INT4))); set = EvalTreeUtil.findUniqueColumns(expr3); assertEquals(2, set.size()); assertTrue(set.contains(new Column("default.people.score", TajoDataTypes.Type.INT4))); assertTrue(set.contains(new Column("default.people.age", TajoDataTypes.Type.INT4))); }