docs: def add_avatar(self, a, b=None):
          """Start keeping track of a :class:`Thing` or :class:`Place` in a
          different :class:`Character`.
  
          """
          if self.engine._planning:
              raise NotImplementedError("Currently can't add avatars within a plan")
          if b is None:
              if not (
                      isinstance(a, Place) or
                      isinstance(a, Thing)
              ):
                  raise TypeError(
                      'when called with one argument, '
                      'it must be a place or thing'
                  )
              g = a.character.name
              n = a.name
          else:
              if isinstance(a, Character):
                  g = a.name
              elif not isinstance(a, str):
                  raise TypeError(
                      'when called with two arguments, '
                      'the first is a character or its name'
                  )
              else:
                  g = a
              if isinstance(b, Place) or isinstance(b, Thing):
                  n = b.name
              elif not isinstance(b, str):
                  raise TypeError(
                      'when called with two arguments, '
                      'the second is a thing/place or its name'
                  )
              else:
                  n = b
          # This will create the node if it doesn't exist. Otherwise
          # it's redundant but harmless.
          self.engine._exist_node(g, n)
          # Declare that the node is my avatar
          branch, turn, tick = self.engine._nbtt()
          self.engine._remember_avatarness(self.name, g, n, branch=branch, turn=turn, tick=tick)