### Question:
MvccEntityImpl implements MvccEntity { @Override public boolean equals( final Object o ) { if ( this == o ) { return true; } if ( !( o instanceof MvccEntityImpl ) ) { return false; } final MvccEntityImpl that = ( MvccEntityImpl ) o; if ( !entityId.equals( that.entityId ) ) { return false; } if ( status != that.status ) { return false; } if ( !version.equals( that.version ) ) { return false; } return true; } MvccEntityImpl( final Id entityId, final UUID version, final Status status, final Entity entity );  MvccEntityImpl(
        final Id entityId, final UUID version, final Status status, final Optional<Entity> entity);  MvccEntityImpl(
            final Id entityId, final UUID version, final Status status, final Optional<Entity> entity, final long size); @Override Optional<Entity> getEntity(); @Override UUID getVersion(); @Override Id getId(); @Override Status getStatus(); @Override long getSize(); @Override void setSize(long size); @Override boolean equals( final Object o ); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void equals() { final SimpleId entityId = new SimpleId( "test" ); final UUID version = UUIDGenerator.newTimeUUID(); final Entity entity = new Entity( entityId ); MvccEntityImpl first = new MvccEntityImpl( entityId, version, MvccEntity.Status.COMPLETE, Optional.of( entity ) ); MvccEntityImpl second = new MvccEntityImpl( entityId, version, MvccEntity.Status.COMPLETE, Optional.of( entity ) ); assertEquals( first, second ); }