code: def everythingbut(self):
  		'''
  			Return a finite state machine which will accept any string NOT
  			accepted by self, and will not accept any string accepted by self.
  			This is more complicated if there are missing transitions, because the
  			missing "dead" state must now be reified.
  		'''
  		alphabet = self.alphabet
  
  		initial = {0 : self.initial}
  
  		def follow(current, symbol):
  			next = {}
  			if 0 in current and current[0] in self.map and symbol in self.map[current[0]]:
  				next[0] = self.map[current[0]][symbol]
  			return next
  
  		# state is final unless the original was
  		def final(state):
  			return not (0 in state and state[0] in self.finals)
  
  		return crawl(alphabet, initial, final, follow).reduce(f everythingbut(self):
  		'''
  			Return a finite state machine which will accept any string NOT
  			accepted by self, and will not accept any string accepted by self.
  			This is more complicated if there are missing transitions, because the
  			missing "dead" state must now be reified.
  		'''
  		alphabet = self.alphabet
  
  		initial = {0 : self.initial}
  
  		def follow(current, symbol):
  			next = {}
  			if 0 in current and current[0] in self.map and symbol in self.map[current[0]]:
  				next[0] = self.map[current[0]][symbol]
  			return next
  
  		# state is final unless the original was
  		def final(state):
  			return not (0 in state and state[0] in self.finals)
  
  		return crawl(alphabet, initial, final, follow).reduce()
docs: Return a finite state machine which will accept any string NOT
  			accepted by self, and will not accept any string accepted by self.
  			This is more complicated if there are missing transitions, because the
  			missing "dead" state must now be reified.