code: void populateAnyNavigationFrames(int pathTokenIndex, int len) {
          // populate "recursive" multi-positions
          if (multiPositions == null) {
              // lazy-init only if necessary
              multiPositions = new ArrayDeque<NavigationFrame>();
          }
          for (int cellIndex = len - 1; cellIndex > 0; cellIndex--) {
              multiPositions.addFirst(new NavigationFrame(cd, pathTokenIndex, cellIndex, in.position(), offset));
          }
      }
docs: Populates the context with multi-positions that have to be processed later on in the navigation process.
  The contract is that the cell[0] path is read in the non-multi-position navigation.
  Cells[1, len-1] are stored in the multi-positions and will be followed up on later on.