def visit(self, *tree):
        queue = deque(tree)
        while queue:
            node = queue.popleft()
            if node.type in self.grammar.number2symbol:
                node_type = self.grammar.number2symbol[node.type]
            elif node.type in token.tok_name:
                node_type = token.tok_name[node.type]
            else:
                node_type = 'unknown'
            self.types.add(node_type)
            method = getattr(self, 'on_' + node_type, None)
            if method is not None:
                for part in method(node):
                    yield part
            else:
                queue.extend(node.children)
:param BlockDeviceVolume volume: The block device which has the
dataset/ETHPy150Open Evgenus/protocyt/protocyt/compiler.py/TreeVisitor.visit--crossover with--dataset/ETHPy150Open ClusterHQ/flocker/flocker/node/agents/blockdevice.py/_manifestation_from_volume