### Question:
QMap extends FactoryExpressionBase<Map<Expression<?>,?>> { @Override public List<Expression<?>> getArgs() { return args; } @SuppressWarnings("unchecked") protected  QMap(Expression<?>... args); @SuppressWarnings("unchecked") protected  QMap(ImmutableList<Expression<?>> args); @SuppressWarnings("unchecked") protected  QMap(Expression<?>[]... args); @Override @Nullable R accept(Visitor<R, C> v, C context); @Override List<Expression<?>> getArgs(); @Override boolean equals(Object obj); @Override @Nullable Map<Expression<?>, ?> newInstance(Object... args);  }### Answer:
@Test public void twoExpressions_getArgs() { assertEquals(Arrays.asList(str1, str2), new QMap(str1, str2).getArgs()); }
@Test public void oneArray_getArgs() { assertEquals(Arrays.asList(str1, str2), new QMap(exprs1).getArgs()); }
@Test public void twoExpressionArrays_getArgs() { assertEquals(Arrays.asList(str1, str2, str3, str4), new QMap(exprs1, exprs2).getArgs()); }
@Test public void nestedProjection_getArgs() { assertEquals(Arrays.asList(str1, str2), FactoryExpressionUtils.wrap(new QMap(concat)).getArgs()); }
@Test public void nestedProjection_getArgs2() { assertEquals(Arrays.asList(str1, str2, str3), FactoryExpressionUtils.wrap(new QMap(concat, str3)).getArgs()); }