### Question:
Property implements Expression { @Override public Object evaluate(Object obj) { return resolve(obj); } Property(String property); String property(); boolean has(Object obj); @Override Object evaluate(Object obj); @Override R accept(FilterVisitor<R> visitor, Object obj); @Override int hashCode(); @Override boolean equals(Object obj); @Override String toString();  }### Answer:
@Test public void testResolveObject() { Bar bar = new Bar("one"); Foo foo = new Foo(bar, "two"); assertEquals("two", new Property("baz").evaluate(foo)); assertEquals(bar, new Property("bar").evaluate(foo)); assertEquals("one", new Property("bar.bam").evaluate(foo)); }
@Test public void testResolveObjectWithNull() { assertNull(new Property("bar").evaluate(null)); assertNull(new Property("bar.bam").evaluate(new Foo(null, "blah"))); }