docs: def _index_key_for(self, att, value=None):
          """Returns a key based on the attribute and its value.
  
          The key is used for indexing.
          """
          if value is None:
              value = getattr(self, att)
              if callable(value):
                  value = value()
          if value is None:
              return None
          if att not in self.lists:
              return self._get_index_key_for_non_list_attr(att, value)
          else:
              return self._tuple_for_index_key_attr_list(att, value)