@Override
    public boolean equals(Object other) {
        if (this == other)
            return true;
        if(!(other instanceof HollowMapSchema))
            return false;
        HollowMapSchema otherSchema = (HollowMapSchema)other;
        if(!getName().equals(otherSchema.getName()))
            return false;
        if(!getKeyType().equals(otherSchema.getKeyType()))
            return false;
        if(!getValueType().equals(otherSchema.getValueType()))
            return false;

        return isNullableObjectEquals(hashKey, otherSchema.getHashKey());
    }
@Test
    public void testEquals() {
        {
            HollowMapSchema s1 = new HollowMapSchema("Test", "TypeA", "TypeB");
            HollowMapSchema s2 = new HollowMapSchema("Test", "TypeA", "TypeB");

            Assert.assertEquals(s1, s2);
        }

        {
            HollowMapSchema s1 = new HollowMapSchema("Test", "TypeA", "TypeB");
            HollowMapSchema s2 = new HollowMapSchema("Test2", "TypeA", "TypeB");

            Assert.assertNotEquals(s1, s2);
        }

        {
            HollowMapSchema s1 = new HollowMapSchema("Test", "TypeA", "TypeB");
            HollowMapSchema s2 = new HollowMapSchema("Test", "TypeB", "TypeB");

            Assert.assertNotEquals(s1, s2);
        }

        {
            HollowMapSchema s1 = new HollowMapSchema("Test", "TypeA", "TypeB");
            HollowMapSchema s2 = new HollowMapSchema("Test", "TypeA", "TypeC");

            Assert.assertNotEquals(s1, s2);
        }
    }