### Question:
LazyModel implements IModel<T>, IObjectClassAwareModel<T>,
		IObjectTypeAwareModel<T>, IPropertyReflectionAwareModel<T> { public T getObject() { checkBound(); Object result = target; if (result instanceof IModel) { result = ((IModel<T>) result).getObject(); } MethodIterator methodIterator = new MethodIterator(); while (result != null && methodIterator.hasNext()) { methodIterator.next(result.getClass()); result = methodIterator.get(result); } return (T) result; } LazyModel(Object target, Object stack); IModel<T> loadableDetachable(); @Override Class<T> getObjectClass(); Type getObjectType(); @Override Field getPropertyField(); @Override Method getPropertyGetter(); @Override Method getPropertySetter(); @Override void detach(); T getObject(); void setObject(T result); Object getTarget(); LazyModel<T> bind(Object target); @Override String toString(); String getPath(); static T from(T target); static T from(Class<T> targetType); static T from(IModel<T> target, Class<T> type); static T from(IModel<T> target); static LazyModel<R> model(R result); static String path(R result); static IMethodResolver methodResolver; }### Answer:
@Test public void getObject() { A a = new A(); a.b = new B(); LazyModel<B> model = model(from(a).getB()); assertEquals(B.class, model.getObjectClass()); assertEquals("b", model.getPath()); assertEquals(a.b, model.getObject()); }