### Question:
LazyModel implements IModel<T>, IObjectClassAwareModel<T>,
		IObjectTypeAwareModel<T>, IPropertyReflectionAwareModel<T> { public String getPath() { checkBound(); StringBuilder string = new StringBuilder(); Type type = getTargetType(); if (type == null) { throw new WicketRuntimeException("cannot detect target type"); } MethodIterator methodIterator = new MethodIterator(); while (methodIterator.hasNext()) { methodIterator.next(Reflection.getClass(type)); if (string.length() > 0) { string.append("."); } string.append(methodIterator.id.toString()); type = Reflection.resultType(type, methodIterator.method.getGenericReturnType()); } return string.toString(); } 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 getPath() { assertEquals("b.cs.size()", path(from(A.class).getB().getCs().size())); }