tested that a() uses deep equals
replaced areEqual/areEqualDeep by java.util.Objects methods