public string Print(List<Token> tokens)
{
var filter = new UnusedReferencesTokenFilter();
var backreferences = filter.GetBackreferences(tokens);
Dictionary<Reference, string> referencePaths = CreatePathsFromReferences(tokens, backreferences);
return MakeString(tokens, referencePaths);
}