code: boolean moveCursor(final INodeReadTrx paramRtx, final ERevision paramRevision) throws TTIOException {
          assert paramRtx != null;
  
          boolean moved = false;
  
          final ITreeStructData node = ((ITreeStructData)paramRtx.getNode());
          if (node.hasFirstChild()) {
              if (node.getKind() != ROOT && mDiffKind == EDiffOptimized.HASHED && mHashKind != HashKind.None
                  && (mDiff == EDiff.SAMEHASH || mDiff == EDiff.DELETED)) {
                  moved = paramRtx.moveTo(((ITreeStructData)paramRtx.getNode()).getRightSiblingKey());
  
                  if (!moved) {
                      moved = moveToFollowingNode(paramRtx, paramRevision);
                  }
              } else {
                  moved = paramRtx.moveTo(((ITreeStructData)paramRtx.getNode()).getFirstChildKey());
                  if (moved) {
                      switch (paramRevision) {
                      case NEW:
                          mDepth.incrementNewDepth();
                          break;
                      case OLD:
                          mDepth.incrementOldDepth();
                          break;
                      }
                  }
              }
          } else if (node.hasRightSibling()) {
              if (paramRtx.getNode().getDataKey() == mRootKey) {
                  paramRtx.moveTo(ROOT_NODE);
              } else {
                  moved = paramRtx.moveTo(((ITreeStructData)paramRtx.getNode()).getRightSiblingKey());
              }
          } else {
              moved = moveToFollowingNode(paramRtx, paramRevision);
          }
  
          return moved;
      }
docs: Move cursor one node forward in pre order.
  
  @param paramRtx
  the {@link IReadTransaction} to use
  @param paramRevision
  the {@link ERevision} constant
  @return true, if cursor moved, false otherwise
  @throws TTIOException