The TokenManager defines Token interfaces for the clang syntax-tree. This is level of
abstraction that the syntax-tree should use to operate on Tokens.
It decouples the syntax-tree from a particular token implementation (TokenBuffer
previously). This enables us to use a different underlying token implementation
for the syntax Leaf node -- in clang pseudoparser, we want to produce a
syntax-tree with its own pseudo::Token rather than syntax::Token.
conceptually this is just "TokenBuffer implements TokenManager"
The main reason I can see not to actually write that is to avoid the dependency from TokenBuffer (tokens library) to TokenManager (syntax library). But here you've added that dependency anyway.
So I think we'd be better either with TokenBuffer : TokenManager or moving this class to its own header.