### Question:
HiveApplyProjectionUtil { @VisibleForTesting static boolean isPushDownSupported(ConnectorExpression expression) { return expression instanceof Variable || (expression instanceof FieldDereference && isPushDownSupported(((FieldDereference) expression).getTarget())); } private  HiveApplyProjectionUtil(); static List<ConnectorExpression> extractSupportedProjectedColumns(ConnectorExpression expression); static ProjectedColumnRepresentation createProjectedColumnRepresentation(ConnectorExpression expression); static ConnectorExpression replaceWithNewVariables(ConnectorExpression expression, Map<ConnectorExpression, Variable> expressionToVariableMappings); static Optional<String> find(Map<String, ColumnHandle> assignments, ProjectedColumnRepresentation projectedColumn);  }### Answer:
@Test public void testIsProjectionSupported() { assertTrue(isPushDownSupported(ONE_LEVEL_DEREFERENCE)); assertTrue(isPushDownSupported(TWO_LEVEL_DEREFERENCE)); assertTrue(isPushDownSupported(INT_VARIABLE)); assertFalse(isPushDownSupported(CONSTANT)); }