### Question:
MvccLogEntryImpl implements MvccLogEntry { @Override public boolean equals( final Object o ) { if ( this == o ) { return true; } if ( o == null || getClass() != o.getClass() ) { return false; } final MvccLogEntryImpl that = ( MvccLogEntryImpl ) o; if ( !entityId.equals( that.entityId ) ) { return false; } if ( !version.equals( that.version ) ) { return false; } if ( stage != that.stage ) { return false; } if( state != that.state ){ return false; } return true; } MvccLogEntryImpl( final Id entityId, final UUID version, final Stage stage, final State state ); @Override Stage getStage(); @Override Id getEntityId(); @Override UUID getVersion(); @Override State getState(); @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 Stage stage = Stage.COMPLETE; final MvccLogEntry.State state = MvccLogEntry.State.COMPLETE; MvccLogEntry first = new MvccLogEntryImpl( entityId, version, stage, state ); MvccLogEntry second = new MvccLogEntryImpl( entityId, version, stage, state ); assertEquals( first, second ); }