code: public Message resolve(ObjectGraphNavigationInfo info)
  	{
  		if (info.getTarget() == null)
  		{
  			return resolveWithPlainOldFixture(info);
  		}
  		else
  		{
  			Class clazz = target.getClass();
  			String[] splits = info.getTarget().split("\\.");
  			LinkedList<ObjectGraphInvocable> invocations = new LinkedList<ObjectGraphInvocable>();
  
  			for (String split : splits) {
  				List<Method> methods = getMethods(clazz, split);
  				Method method = methods != null && methods.size() > 0 ? methods.get(0) : null;
  
  				if (method == null)
                  {
  					method = getGetter(clazz, split);
  				}
  
  				if (method == null)
                  {
  					Field field = getField(clazz, split);
  
  					if (field == null)
                      {
  						break;
  					}
                      else
                      {
  						clazz = field.getType();
  						invocations.add(new ObjectGraphFieldInvocation(field, true));
  					}
  				}
                  else
                  {
  					clazz = method.getReturnType();
  					invocations.add(new ObjectGraphMethodInvocation(method, info.isGetter()));
  				}
  			}
  
  			if (invocations.size() == splits.length)
              {
  				ObjectGraphInvocable methodCall = getInvocation(clazz, info.getMethodName(), info.isGetter());
  
  				if (methodCall != null)
                  {
  					invocations.add(methodCall);
  					return new ObjectGraphNavigationMessage(target, invocations);
  				}
  			}
  		}
  
  		return null;
  	}
docs: {@inheritDoc}