docs: def save(self, *args):
          """Put text in my store, return True if it changed"""
          if self.name_wid is None or self.store is None:
              Logger.debug("{}: Not saving, missing name_wid or store".format(type(self).__name__))
              return
          if not (self.name_wid.text or self.name_wid.hint_text):
              Logger.debug("{}: Not saving, no name".format(type(self).__name__))
              return
          if self.name_wid.text and self.name_wid.text[0] in string.digits + string.whitespace + string.punctuation:
              # TODO alert the user to invalid name
              Logger.warning("{}: Not saving, invalid name".format(type(self).__name__))
              return
          if hasattr(self, '_do_parse'):
              try:
                  parse(self.source)
              except SyntaxError:
                  # TODO alert user to invalid source
                  Logger.debug("{}: Not saving, couldn't parse".format(type(self).__name__))
                  return
          do_redata = False
          if self.name_wid.text:
              if (
                  self.name_wid.hint_text and
                  self.name_wid.hint_text != self.name_wid.text and
                  hasattr(self.store, self.name_wid.hint_text)
              ):
                  delattr(self.store, self.name_wid.hint_text)
                  do_redata = True
              if (
                  not hasattr(self.store, self.name_wid.text) or
                  getattr(self.store, self.name_wid.text) != self.source
              ):
                  Logger.debug("{}: Saving!".format(type(self).__name__))
                  setattr(self.store, self.name_wid.text, self.source)
                  do_redata = True
          elif self.name_wid.hint_text:
              if (
                  not hasattr(self.store, self.name_wid.hint_text) or
                  getattr(self.store, self.name_wid.hint_text) != self.source
              ):
                  Logger.debug("{}: Saving!".format(type(self).__name__))
                  setattr(self.store, self.name_wid.hint_text, self.source)
                  do_redata = True
          return do_redata