code: def call_fsm(method):
  	'''
  		Take a method which acts on 0 or more regular expression objects... return a
  		new method which simply converts them all to FSMs, calls the FSM method
  		on them instead, then converts the result back to a regular expression.
  		We do this for several of the more annoying operations.
  	'''
  	fsm_method = getattr(fsm.fsm, method.__name__)
  	def new_method(*legos):
  		alphabet = set().union(*[lego.alphabet() for lego in legos])
  		return from_fsm(fsm_method(*[lego.to_fsm(alphabet) for lego in legos]))
  	return new_methof call_fsm(method):
  	'''
  		Take a method which acts on 0 or more regular expression objects... return a
  		new method which simply converts them all to FSMs, calls the FSM method
  		on them instead, then converts the result back to a regular expression.
  		We do this for several of the more annoying operations.
  	'''
  	fsm_method = getattr(fsm.fsm, method.__name__)
  	def new_method(*legos):
  		alphabet = set().union(*[lego.alphabet() for lego in legos])
  		return from_fsm(fsm_method(*[lego.to_fsm(alphabet) for lego in legos]))
  	return new_method
docs: Take a method which acts on 0 or more regular expression objects... return a
  		new method which simply converts them all to FSMs, calls the FSM method
  		on them instead, then converts the result back to a regular expression.
  		We do this for several of the more annoying operations.