code: public static LocPathIterator createUnionIterator(Compiler compiler, int opPos)
            throws javax.xml.transform.TransformerException
    {
    	// For the moment, I'm going to first create a full UnionPathIterator, and 
    	// then see if I can reduce it to a UnionChildIterator.  It would obviously 
    	// be more effecient to just test for the conditions for a UnionChildIterator, 
    	// and then create that directly.
    	UnionPathIterator upi = new UnionPathIterator(compiler, opPos);
    	int nPaths = upi.m_exprs.length;
    	boolean isAllChildIterators = true;
    	for(int i = 0; i < nPaths; i++)
    	{
    		LocPathIterator lpi = upi.m_exprs[i];
    		
    		if(lpi.getAxis() != Axis.CHILD)
    		{
    			isAllChildIterators = false;
    			break;
    		}
    		else
    		{
    			// check for positional predicates or position function, which won't work.
    			if(HasPositionalPredChecker.check(lpi))
    			{
    				isAllChildIterators = false;
    				break;
    			}
    		}
    	}
    	if(isAllChildIterators)
    	{
    		UnionChildIterator uci = new UnionChildIterator();
    		
  	  	for(int i = 0; i < nPaths; i++)
  	  	{
  	  		PredicatedNodeTest lpi = upi.m_exprs[i];
  	  		// I could strip the lpi down to a pure PredicatedNodeTest, but 
  	  		// I don't think it's worth it.  Note that the test can be used 
  	  		// as a static object... so it doesn't have to be cloned.
  	  		uci.addNodeTest(lpi);
  	  	}
  	  	return uci;
    		
    	}
    	else
    		return upi;
    }
docs: This will return an iterator capable of handling the union of paths given.
  
  @param compiler The Compiler which is creating
  this expression.
  @param opPos The position of this iterator in the
  opcode list from the compiler.
  
  @return Object that is derived from LocPathIterator.
  
  @throws javax.xml.transform.TransformerException