docs: def get_nodekey(self, token, types=types, coll_abc=collections.abc):
          '''Given a particular token, check the visitor instance for methods
          mathing the computed methodnames (the function is a generator).
          '''
          # Check the mro.
          for mro_type in type(token).__mro__:
              yield mro_type.__name__
  
          # Check for callability.
          if callable(token):
              yield 'callable'
  
          # Check for the collections.abc types.
          abc_types = (
              'Hashable',
              'Iterable',
              'Iterator',
              'Sized',
              'Container',
              'Callable',
              'Set',
              'MutableSet',
              'Mapping',
              'MutableMapping',
              'MappingView',
              'KeysView',
              'ItemsView',
              'ValuesView',
              'Sequence',
              'MutableSequence',
              'ByteString')
          for type_name in abc_types:
              type_ = getattr(coll_abc, type_name, None)
              if type_ is None:
                  continue
              if isinstance(token, type_):
                  yield type_name
  
          # Check for the standard interpreter types in the types module.
          interp_types = (
              'BuiltinFunctionType',
              'BuiltinMethodType',
              'CodeType',
              'DynamicClassAttribute',
              'FrameType',
              'FunctionType',
              'GeneratorType',
              'GetSetDescriptorType',
              'LambdaType',
              'MappingProxyType',
              'MemberDescriptorType',
              'MethodType',
              'ModuleType',
              'SimpleNamespace',
              'TracebackType')
          for type_name in interp_types:
              type_ = getattr(types, type_name, None)
              if type_ is None:
                  continue
              if isinstance(token, type_):
                  yield type_name