### Question:
ConcreteDataModelMirror implements DataModelMirror { @Override public PropertyMirror findProperty(String name) { Objects.requireNonNull(name, "name must not be null"); return prepareProperties().get(JavaName.of(name).toMemberName()); } ConcreteDataModelMirror(
            CompileEnvironment environment,
            DeclaredType type,
            PropertyMirrorCollector collector); @Override String getSimpleName(); @Override Kind getKind(); @Override boolean isSame(DataModelMirror other); @Override boolean canInvoke(DataModelMirror other); @Override boolean canContain(DataModelMirror other); @Override PropertyMirror findProperty(String name); @Override String toString();  }### Answer:
@Test public void findProperty() { DataModelMirror type = new ConcreteDataModelMirror( apt.env, apt.getType(String.class), new MockPropertyMirrorCollector()); PropertyMirror property = type.findProperty("string"); assertThat(property.getName(), is(equalToIgnoringCase(String.class.getSimpleName()))); assertThat(property.getType(), is(apt.sameType(String.class))); }