@Override
    public final boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (!(o instanceof MapStoreConfig that)) {
            return false;
        }

        return enabled == that.enabled
                && writeCoalescing == that.writeCoalescing
                && writeDelaySeconds == that.writeDelaySeconds
                && writeBatchSize == that.writeBatchSize
                && Objects.equals(implementation, that.implementation)
                && Objects.equals(className, that.className)
                && Objects.equals(factoryImplementation, that.factoryImplementation)
                && Objects.equals(factoryClassName, that.factoryClassName)
                && properties.equals(that.properties)
                && initialLoadMode == that.initialLoadMode
                && offload == that.offload;
    }
@Test
    public void testEquals() {
        assertNotEquals(defaultCfg, cfgNotEnabled);
        assertNotEquals(defaultCfg, cfgNotWriteCoalescing);
        assertNotEquals(defaultCfg, cfgNonDefaultWriteDelaySeconds);
        assertNotEquals(defaultCfg, cfgNonDefaultWriteBatchSize);

        // class name branches
        assertNotEquals(defaultCfg, cfgNonNullClassName);
        assertNotEquals(cfgNonNullClassName, cfgNonNullOtherClassName);
        assertNotEquals(cfgNonNullClassName, defaultCfg);

        // factory class name branches
        assertNotEquals(defaultCfg, cfgNonNullFactoryClassName);
        assertNotEquals(cfgNonNullFactoryClassName, cfgNonNullOtherFactoryClassName);
        assertNotEquals(cfgNonNullFactoryClassName, defaultCfg);

        // implementation
        assertNotEquals(defaultCfg, cfgNonNullImplementation);
        assertNotEquals(cfgNonNullImplementation, cfgNonNullOtherImplementation);
        assertNotEquals(cfgNonNullImplementation, defaultCfg);

        // factory implementation
        assertNotEquals(defaultCfg, cfgNonNullFactoryImplementation);
        assertNotEquals(cfgNonNullFactoryImplementation, cfgNonNullOtherFactoryImplementation);
        assertNotEquals(cfgNonNullFactoryImplementation, defaultCfg);

        assertNotEquals(defaultCfg, cfgWithProperties);

        assertNotEquals(defaultCfg, cfgEagerMode);
    }