visit method
      
void
visit(
    
- void callback(- String? pkg,
- String lib,
- String? cls,
- String? fun,
- ProgramInfoNode n,
 
Recursively visit all function nodes, which have FunctionInfo.info
populated.
Implementation
void visit(
    void Function(String? pkg, String lib, String? cls, String? fun,
            ProgramInfoNode n)
        callback) {
  final context = List<String?>.filled(NodeType.values.length, null);
  void recurse(ProgramInfoNode node) {
    final prevContext = context[node._type];
    if (prevContext != null && node._type == NodeType.functionNode.index) {
      context[node._type] = '$prevContext.${node.name}';
    } else {
      context[node._type] = node.name;
    }
    final pkg = context[NodeType.packageNode.index];
    final lib = context[NodeType.libraryNode.index];
    final cls = context[NodeType.classNode.index];
    final mem = context[NodeType.functionNode.index];
    callback(pkg, lib!, cls, mem, node);
    for (var child in node.children.values) {
      recurse(child);
    }
    context[node._type] = prevContext;
  }
  recurse(root);
}