### Question:
QBean extends FactoryExpressionBase<T> { @Override public boolean equals(Object obj) { if (obj == this) { return true; } else if (obj instanceof QBean<?>) { QBean<?> c = (QBean<?>) obj; return getArgs().equals(c.getArgs()) && getType().equals(c.getType()); } else { return false; } } protected  QBean(Class<? extends T> type, Map<String, ? extends Expression<?>> bindings); protected  QBean(Class<? extends T> type, Expression<?>... args); protected  QBean(Class<? extends T> type, boolean fieldAccess, Expression<?>... args); protected  QBean(Class<? extends T> type, boolean fieldAccess, Map<String, ? extends Expression<?>> bindings); @Override T newInstance(Object... a); @SuppressWarnings("unchecked") Expression<T> as(Path<T> alias); Expression<T> as(String alias); @Override R accept(Visitor<R,C> v, C context); @Override boolean equals(Object obj); @Override List<Expression<?>> getArgs();  }### Answer:
@Test public void skipNulls() { QBean<Object> bean = Projections.bean(Object.class); assertEquals(bean, bean); assertEquals(bean.skipNulls(), bean.skipNulls()); assertFalse(bean.skipNulls().equals(bean)); assertFalse(bean.equals(bean.skipNulls())); }