Use a trait instead of callbacks to make mutable it possible to support Walkers with mutable internal state when necessary.