code: private WalkingAction walk(N tree, TreeVisitor<N> walkerClient) {
  	WalkingAction action = walkerClient.visit(tree);
  	if (action == WalkingAction.ABORT) {
  	    return WalkingAction.ABORT;
  	} else if (action == WalkingAction.LEAVE_BRANCH) {
  	    return WalkingAction.PROCEED;
  	}
  	for (N child : tree.getChildren()) {
  	    if (walk(child, walkerClient) == WalkingAction.ABORT) {
  		return WalkingAction.ABORT;
  	    }
  	}
  	return WalkingAction.PROCEED;
      }
docs: This is the recursive part of the walk method.
  
  @param tree
  @param walkerClient
  @return