if (index == forks.length) return frame.getValue(slot);
if (log.isDebugEnabled()) log.debug("Walking path " +name+ " index=" +index+ " frame=" +frame+ " length=" +forks.length);  if (index == forks.length) { Object value = frame.getValue(slot); if (log.isDebugEnabled()) log.debug("End of path at " +frame+ " value of " +slot+ " = " +value); return value; }
    private Object getNextValue(Frame frame, int index)    {	if (index == forks.length) return frame.getValue(slot);	Fork entry = forks[index];	Set frames = frame.findRelations(entry.role, entry.relation);	if (frames == null) return null;	Iterator itr = frames.iterator();	while (itr.hasNext()) {	    Frame next = (Frame) itr.next();	    Object result = getNextValue(next, ++index);	    if (result != null) return result;	}	return null;    }