@Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof IndexMeta)) {
            return false;
        }
        IndexMeta indexMeta = (IndexMeta)o;
        if (!ArrayUtils.isEquals(indexMeta.values, this.values)) {
            return false;
        }
        if (!Objects.equals(indexMeta.nonUnique, this.nonUnique)) {
            return false;
        }
        if (!Objects.equals(indexMeta.indexQualifier, this.indexQualifier)) {
            return false;
        }
        if (!Objects.equals(indexMeta.indexName, this.indexName)) {
            return false;
        }
        if (!Objects.equals(indexMeta.type, this.type)) {
            return false;
        }
        if (!Objects.equals(indexMeta.indextype.value(), this.indextype.value())) {
            return false;
        }
        if (!Objects.equals(indexMeta.ascOrDesc, this.ascOrDesc)) {
            return false;
        }
        if (!Objects.equals(indexMeta.ordinalPosition, this.ordinalPosition)) {
            return false;
        }
        return true;
    }
@Test
    public void testEqualsDifferentType() {
        IndexMeta indexMeta = new IndexMeta();
        String differentType = "I am not an IndexMeta";
        assertFalse(indexMeta.equals(differentType), "An object should not be equal to an object of a different type");
    }