docs: def reversed(self):
  		'''
  			Return a new FSM such that for every string that self accepts (e.g.
  			"beer", the new FSM accepts the reversed string ("reeb").
  		'''
  		alphabet = self.alphabet
  
  		# Start from a composite "state-set" consisting of all final states.
  		# If there are no final states, this set is empty and we'll find that
  		# no other states get generated.
  		initial = frozenset(self.finals)
  
  		# Find every possible way to reach the current state-set
  		# using this symbol.
  		def follow(current, symbol):
  			next = frozenset([
  				prev
  				for prev in self.map
  				for state in current
  				if symbol in self.map[prev] and self.map[prev][symbol] == state
  			])
  			if len(next) == 0:
  				raise OblivionError
  			return next
  
  		# A state-set is final if the initial state is in it.
  		def final(state):
  			return self.initial in state
  
  		# Man, crawl() is the best!
  		return crawl(alphabet, initial, final, follow)