@Test public void equalsAndHashCode() {

  // empty extraction is equivalent
  assertThat(factory.create())
      .isEqualTo(factory.create());
  assertThat(factory.create())
      .hasSameHashCodeAs(factory.create());
  extra.put("1", "one");
  extra.put("2", "two");
  BasicMapExtra extra2 = factory.create();
  extra2.put("1", "one");
  extra2.put("2", "two");
  // same extra are equivalent
  assertThat(extra).isEqualTo(extra2);
  assertThat(extra).hasSameHashCodeAs(extra2);
  // different values are not equivalent
  extra2.put("2", "three");
  assertThat(extra).isNotEqualTo(extra2);
  assertThat(extra.hashCode()).isNotEqualTo(extra2.hashCode());
}