code: public int getNextPreceding(int axisContextHandle, int nodeHandle) {
                  // ###shs copied from Xalan 1, what is this suppose to do?
                  nodeHandle &= NODEHANDLE_MASK;
                  while (nodeHandle > 1) {
                          nodeHandle--;
                          if (ATTRIBUTE_NODE == (nodes.readEntry(nodeHandle, 0) & 0xFFFF))
                                  continue;
  
                          // if nodeHandle is _not_ an ancestor of
                          // axisContextHandle, specialFind will return it.
                          // If it _is_ an ancestor, specialFind will return -1
  
                          // %REVIEW% unconditional return defeats the
                          // purpose of the while loop -- does this
                          // logic make any sense?
  
                          return (m_docHandle | nodes.specialFind(axisContextHandle, nodeHandle));
                  }
                  return NULL;
          }
docs: Given a node handle, advance to the next node on the preceding axis.
  
  @param axisContextHandle the start of the axis that is being traversed.
  @param nodeHandle the id of the node.
  @return int Node-number of preceding sibling,
  or DTM.NULL to indicate none exists.