### Question:
ConfigKeyImpl implements Config.Key { @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } ConfigKeyImpl key = (ConfigKeyImpl) o; return Objects.equals(name, key.name) && Objects.equals(parent, key.parent); } private  ConfigKeyImpl(ConfigKeyImpl parent, String name); @Override ConfigKeyImpl parent(); @Override boolean isRoot(); @Override ConfigKeyImpl child(Config.Key key); @Override String name(); @Override String toString(); @Override boolean equals(Object o); @Override int hashCode(); @Override int compareTo(Config.Key that);  }### Answer:
@Test public void testEquals() { assertThat(ConfigKeyImpl.of(""), is(ConfigKeyImpl.of())); assertThat(ConfigKeyImpl.of("aaa").child(ConfigKeyImpl.of()), is(ConfigKeyImpl.of("aaa"))); assertThat(ConfigKeyImpl.of("bbb"), is(ConfigKeyImpl.of("bbb"))); assertThat(ConfigKeyImpl.of("aaa").child(ConfigKeyImpl.of("bbb")), is(ConfigKeyImpl.of("aaa.bbb"))); }