You are going to scream but having a mix of function out of the class and in the class is really strange here, I think that having everything in the class would be better :/

That would allow to write cleaner code, like for the dumper we could move from:

```python
def dumps(tree):
    worker = Dumper()
    walk(worker, tree)
    return worker.dump

class Dumper(NodeWalkerWorker):
    def __init__(self):
        self.dump = ''

    def on_constant(self, constant):
        self.dump += constant
        return self.CONTINUE
```

To:

```python
def dumps(tree):
    return Dumper().walk(tree)

class Dumper(NodeWalkerWorker):
    def on_constant(self, constant):
        self.dump += constant
        return self.CONTINUE

    def walk(self, tree):
        self.dump = ""
        super(self).walk(tree)
        return self.dump
```

Which I think will be a way more intuitive API for most python programmers.