### Question:
Projections { public static <T> ArrayConstructorExpression<T> array(Class<T[]> type, Expression<T>... exprs) { return new ArrayConstructorExpression<T>(type, exprs); } private  Projections(); static ArrayConstructorExpression<T> array(Class<T[]> type, Expression<T>... exprs); static AppendingFactoryExpression<T> appending(Expression<T> base, Expression<?>... rest); static QBean<T> bean(Class<? extends T> type, Expression<?>... exprs); static QBean<T> bean(Path<? extends T> type, Expression<?>... exprs); static QBean<T> bean(Path<? extends T> type, Map<String, ? extends Expression<?>> bindings); static QBean<T> bean(Class<? extends T> type, Map<String, ? extends Expression<?>> bindings); static ConstructorExpression<T> constructor(Class<? extends T> type, Expression<?>... exprs); static ConstructorExpression<T> constructor(Class<? extends T> type, Class<?>[] paramTypes, Expression<?>... exprs); static ConstructorExpression<T> constructor(Class<? extends T> type, Class<?>[] paramTypes, ImmutableList<Expression<?>> exprs); static QBean<T> fields(Class<? extends T> type, Expression<?>... exprs); static QBean<T> fields(Path<? extends T> type, Expression<?>... exprs); static QBean<T> fields(Path<? extends T> type, Map<String, ? extends Expression<?>> bindings); static QBean<T> fields(Class<? extends T> type, Map<String, ? extends Expression<?>> bindings); static QList list(Expression<?>... args); static QList list(ImmutableList<Expression<?>> args); static QList list(Expression<?>[]... args); static QMap map(Expression<?>... exprs); static QTuple tuple(Expression<?>... exprs); static QTuple tuple(ImmutableList<Expression<?>> exprs); static QTuple tuple(Expression<?>[]... exprs);  }### Answer:
@SuppressWarnings("unchecked") @Test public void array() { FactoryExpression<String[]> expr = Projections.array(String[].class, ExpressionUtils.path(String.class, "p1"), ExpressionUtils.path(String.class, "p2")); assertEquals(String[].class, expr.newInstance("1", "2").getClass()); }