code: protected MultistepExprHolder createMultistepExprList(Vector paths)
    {
    	MultistepExprHolder first = null;
    	int n = paths.size();
    	for(int i = 0; i < n; i++)
    	{
    		ExpressionOwner eo = (ExpressionOwner)paths.elementAt(i);
    		if(null == eo)
    			continue;
    			
    		// Assuming location path iterators should be OK.
    		LocPathIterator lpi = (LocPathIterator)eo.getExpression();
    		int numPaths = countSteps(lpi);
    		if(numPaths > 1)
    		{
    			if(null == first)
    				first = new MultistepExprHolder(eo, numPaths, null);
    			else
    				first = first.addInSortedOrder(eo, numPaths);
    		}
    	}
    	
    	if((null == first) || (first.getLength() <= 1))
    		return null;
    	else
    		return first;
    }
docs: For the reduction of location path parts, create a list of all
  the multistep paths with more than one step, sorted by the
  number of steps, with the most steps occuring earlier in the list.
  If the list is only one member, don't bother returning it.
  
  @param paths Vector of ExpressionOwner objects, which may contain null entries.
  The ExpressionOwner objects must own LocPathIterator objects.
  @return null if no multipart paths are found or the list is only of length 1,
  otherwise the first MultistepExprHolder in a linked list of these objects.