docs: def _upd_unused(self, what):
          """Make sure to have exactly one copy of every valid function in the
          "unused" pile on the right.
  
          Doesn't read from the database.
  
          :param what: a string, 'trigger', 'prereq', or 'action'
  
          """
          builder = getattr(self, '_{}_builder'.format(what))
          updtrig = getattr(self, '_trigger_upd_unused_{}s'.format(what))
          builder.unbind(decks=updtrig)
          funcs = OrderedDict()
          cards = list(self._action_builder.decks[1])
          cards.reverse()
          for card in cards:
              funcs[card.ud['funcname']] = card
          for card in self._action_builder.decks[0]:
              if card.ud['funcname'] not in funcs:
                  funcs[card.ud['funcname']] = card.copy()
          unused = list(funcs.values())
          unused.reverse()
          builder.decks[1] = unused
          builder.bind(decks=updtrig)