### Question:
QMap extends FactoryExpressionBase<Map<Expression<?>,?>> { @Override @Nullable public Map<Expression<?>, ?> newInstance(Object... args) { Map<Expression<?>, Object> map = Maps.newHashMap(); for (int i = 0; i < args.length; i++) { map.put(this.args.get(i), args[i]); } return map; } @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 nestedProjection_newInstance() { QMap expr = new QMap(concat); assertEquals("1234", FactoryExpressionUtils.wrap(expr).newInstance("12", "34").get(concat)); }
@Test public void nestedProjection_newInstance2() { QMap expr = new QMap(str1, str2, concat); assertEquals("1234", FactoryExpressionUtils.wrap(expr).newInstance("1", "2", "12", "34").get(concat)); }
@Test public void tuple_equals() { QMap expr = new QMap(str1, str2); assertEquals(expr.newInstance("str1", "str2"), expr.newInstance("str1", "str2")); }
@Test public void tuple_hashCode() { QMap expr = new QMap(str1, str2); assertEquals(expr.newInstance("str1", "str2").hashCode(), expr.newInstance("str1", "str2").hashCode()); }
@Test public void null_value() { QMap expr = new QMap(str1, str2); assertNotNull(expr.newInstance("str1", null)); }