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_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.