@Beta
@GwtCompatible
@Target(value=TYPE)
public @interface EqualsHashCode
equals and hashCode.
 
 All non-static, non-transient fields are used. Subclasses are never equal to their superclasses.
 If there is a superclass that overrides equals, then super.equals() and super.hashCode are also called.
 Array-valued fields are compared using #Arrays.deepEquals(java.lang.Object[], java.lang.Object[]).