@Override
    @SuppressWarnings("checkstyle:npathcomplexity")
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }

        AbstractRecord<?> that = (AbstractRecord<?>) o;

        if (version != that.version) {
            return false;
        }
        if (hits != that.hits) {
            return false;
        }
        if (lastAccessTime != that.lastAccessTime) {
            return false;
        }
        if (lastUpdateTime != that.lastUpdateTime) {
            return false;
        }
        if (creationTime != that.creationTime) {
            return false;
        }
        if (lastStoredTime != that.lastStoredTime) {
            return false;
        }
        return true;
    }
@Test
    public void testEquals() {
        assertEquals(record, record);
        assertEquals(record, recordSameAttributes);

        assertNotEquals(null, record);
        assertNotEquals(new Object(), record);

        assertNotEquals(record, recordOtherVersion);
        assertNotEquals(record, recordOtherCreationTime);
        assertNotEquals(record, recordOtherHits);
        assertNotEquals(record, recordOtherLastAccessTime);
        assertNotEquals(record, recordOtherLastUpdateTime);
    }