### Question:
MediaInfoDocumentImpl extends LabeledStatementDocumentImpl implements MediaInfoDocument { @Override public int hashCode() { return Hash.hashCode(this); } MediaInfoDocumentImpl(
			MediaInfoIdValue id,
			List<MonolingualTextValue> labels,
			List<StatementGroup> statements,
			long revisionId); @JsonCreator  MediaInfoDocumentImpl(
			@JsonProperty("id") String jsonId,
			@JsonProperty("labels") @JsonDeserialize(contentAs=TermImpl.class) Map<String, MonolingualTextValue> labels,
			@JsonProperty("claims") Map<String, List<StatementImpl.PreStatement>> claims,
			@JsonProperty("statements") Map<String, List<StatementImpl.PreStatement>> statements,
			@JsonProperty("lastrevid") long revisionId,
			@JacksonInject("siteIri") String siteIri); protected  MediaInfoDocumentImpl(
			MediaInfoIdValue subject,
			Map<String, MonolingualTextValue> labels,
			Map<String, List<Statement>> claims,
			long revisionId); @JsonIgnore @Override MediaInfoIdValue getEntityId(); @Override int hashCode(); @Override boolean equals(Object obj); @Override String toString(); @Override MediaInfoDocument withRevisionId(long newRevisionId); @Override MediaInfoDocument withLabel(MonolingualTextValue newLabel); @Override MediaInfoDocument withStatement(Statement statement); @Override MediaInfoDocument withoutStatementIds(Set<String> statementIds);  }### Answer:
@Test public void hashBasedOnContent() { assertEquals(mi1.hashCode(), mi2.hashCode()); }