code: def unique_name(self, name, mark_as_used=True):
      
      scope_name = tf.get_variable_scope().name
      if scope_name:
        name = scope_name + "/" + name
  
      # As in TensorFlow, treat names as case insensitive when deciding whether
      # they are in use.
      name_key = name.lower()
      i = self._names_in_use.get(name_key, 0)
      if mark_as_used:
        self._names_in_use[name_key] = i + 1
      if i > 0:
        base_name_key = name_key
        while name_key in self._names_in_use:
          name_key = "%s_%d" % (base_name_key, i)
          i += 1
        if mark_as_used:
          self._names_in_use[name_key] = 1
        name = "%s_%d" % (name, i-1)
  
      return name
docs: Like tf.Graph.unique_name, returns a unique operation name for `name`.
  
      Args:
        name: The name for an operation.
        mark_as_used: whether to mark this name as being used.
  
      Returns:
        A string to use as the name for the operation.