code: static AxesWalker loadWalkers(
            WalkingIterator lpi, Compiler compiler, int stepOpCodePos, int stepIndex)
              throws javax.xml.transform.TransformerException
    {
  
      int stepType;
      AxesWalker firstWalker = null;
      AxesWalker walker, prevWalker = null;
  
      int analysis = analyze(compiler, stepOpCodePos, stepIndex);
  
      while (OpCodes.ENDOP != (stepType = compiler.getOp(stepOpCodePos)))
      {
        walker = createDefaultWalker(compiler, stepOpCodePos, lpi, analysis);
  
        walker.init(compiler, stepOpCodePos, stepType);
        walker.exprSetParent(lpi);
  
        // walker.setAnalysis(analysis);
        if (null == firstWalker)
        {
          firstWalker = walker;
        }
        else
        {
          prevWalker.setNextWalker(walker);
          walker.setPrevWalker(prevWalker);
        }
  
        prevWalker = walker;
        stepOpCodePos = compiler.getNextStepPos(stepOpCodePos);
  
        if (stepOpCodePos < 0)
          break;
      }
  
      return firstWalker;
    }
docs: This method is for building an array of possible levels
  where the target element(s) could be found for a match.
  @param lpi The owning location path iterator object.
  @param compiler non-null reference to compiler object that has processed
  the XPath operations into an opcode map.
  @param stepOpCodePos The opcode position for the step.
  @param stepIndex The top-level step index withing the iterator.
  
  @return non-null AxesWalker derivative.
  
  @throws javax.xml.transform.TransformerException
  @xsl.usage advanced