Tokenlister

I have been working on an updated version of Tokenlister, moving to OO and using the new syntax without the shim. I will confess that not being familiar with the old interface, there is a lot in Proparse.p that is obscure. But, I think I have done a reasonable job of working through the shift up to the point of the display node routine which looks like this:

  DEFINE INPUT PARAMETER theNode AS INTEGER NO-UNDO.

  DEFINE VARIABLE nodeType AS CHARACTER NO-UNDO.
  DEFINE VARIABLE child    AS INTEGER   NO-UNDO.
  ASSIGN child = parserGetHandle().

  RUN printline (theNode, indent).

  ASSIGN nodeType = parserNodeFirstChild(theNode,child).
  ASSIGN indent = indent + indentby.
  DO WHILE nodeType <> "":
    /* If this is a new node head, run displayNode with it */
    IF parserNodeFirstChild(child, grandchild) <> "" THEN DO:
      RUN displayNode (child).
      ASSIGN nodeType = parserNodeNextSibling(child,child).
    END.
    ELSE DO:
      RUN printline (child, indent).
      ASSIGN nodeType = parserNodeNextSibling(child, child).
    END.
  END.
  ASSIGN indent = indent - indentby.
  parserReleaseHandle(child).

What I am wondering is whether this should be shifted over to the TreeWalker approach I have been using in other new applications. I.e., a small recursive TreeWalker which calls a PrintNode routine and then calls itself on the firstChild and then the next sibling. The PrintNode routine would then be just like the existing PrintLine. Would that be more in keeping with current practice? I gather that is *sortof* what this code is doing, it just seems so much more obscure.