### Question:
QTuple extends FactoryExpressionBase<Tuple> { @Override public List<Expression<?>> getArgs() { return args; } protected  QTuple(Expression<?>... args); protected  QTuple(ImmutableList<Expression<?>> args); protected  QTuple(Expression<?>[]... args); @Override Tuple newInstance(Object... a); @Override R accept(Visitor<R,C> v, C context); @Override boolean equals(Object obj); @Override List<Expression<?>> getArgs();  }### Answer:
@Test public void twoExpressions_getArgs() { assertEquals(Arrays.asList(str1, str2), new QTuple(str1, str2).getArgs()); }
@Test public void oneArray_getArgs() { assertEquals(Arrays.asList(str1, str2), new QTuple(exprs1).getArgs()); }
@Test public void twoExpressionArrays_getArgs() { assertEquals(Arrays.asList(str1, str2, str3, str4), new QTuple(exprs1, exprs2).getArgs()); }
@Test public void nestedProjection_getArgs() { assertEquals(Arrays.asList(str1, str2), FactoryExpressionUtils.wrap(new QTuple(concat)).getArgs()); }
@Test public void nestedProjection_getArgs2() { assertEquals(Arrays.asList(str1, str2, str3), FactoryExpressionUtils.wrap(new QTuple(concat, str3)).getArgs()); }
@Test @Ignore public void duplicates() { QTuple expr = new QTuple(str1, str1); assertEquals(1, expr.getArgs().size()); assertEquals(str1, expr.getArgs().get(0)); }
@Test @Ignore public void duplicates2() { QTuple expr = new QTuple(ImmutableList.<Expression<?>>of(str1, str1)); assertEquals(1, expr.getArgs().size()); assertEquals(str1, expr.getArgs().get(0)); }