code: protected void UnionExpr() throws javax.xml.transform.TransformerException
    {
  
      int opPos = m_ops.getOp(OpMap.MAPINDEX_LENGTH);
      boolean continueOrLoop = true;
      boolean foundUnion = false;
  
      do
      {
        PathExpr();
  
        if (tokenIs('|'))
        {
          if (false == foundUnion)
          {
            foundUnion = true;
  
            insertOp(opPos, 2, OpCodes.OP_UNION);
          }
  
          nextToken();
        }
        else
        {
          break;
        }
  
        // this.m_testForDocOrder = true;
      }
      while (continueOrLoop);
  
      m_ops.setOp(opPos + OpMap.MAPINDEX_LENGTH,
            m_ops.getOp(OpMap.MAPINDEX_LENGTH) - opPos);
    }
docs: The context of the right hand side expressions is the context of the
  left hand side expression. The results of the right hand side expressions
  are node sets. The result of the left hand side UnionExpr is the union
  of the results of the right hand side expressions.
  
  
  UnionExpr    ::=    PathExpr
  | UnionExpr '|' PathExpr
  
  
  @throws javax.xml.transform.TransformerException