AbstractLog implements Log { @Override public void setTimestamp(Date timestamp) { this.timestamp = timestamp; }  @Override Date getTimestamp(); @Override void setTimestamp(Date timestamp); @Override UUID getSid(); @Override void setSid(UUID sid); @Override String getDistributionGroupId(); @Override void setDistributionGroupId(String distributionGroupId); @Override String getUserId(); @Override void setUserId(String userId); @Override Device getDevice(); @Override void setDevice(Device device); @Override Object getTag(); @Override void setTag(Object tag); @Override synchronized void addTransmissionTarget(String transmissionTargetToken); @Override synchronized Set<String> getTransmissionTargetTokens(); @Override void write(JSONStringer writer); @Override void read(JSONObject object); @SuppressWarnings("EqualsReplaceableByObjectsCall") @Override boolean equals(Object o); @Override int hashCode();  }
@Test public void compareDifferentType() { TestUtils.compareSelfNullClass(new MockLog()); MockLogWithProperties mockLogWithProperties = new MockLogWithProperties(); TestUtils.compareSelfNullClass(mockLogWithProperties); mockLogWithProperties.setTimestamp(new Date(1L)); checkNotEquals(mockLogWithProperties, new MockLogWithProperties()); }