#NEWLINE# def receive( self , input ) : #NEWLINE# #INDENT# '\n        Deliver an input symbol to the wrapped L{IFiniteStateMachine} from the\n        given input, which may be symbolic or rich, and deliver the resulting\n        outputs to the wrapped L{IOutputExecutor}.\n\n        @param input: An input symbol or an L{IRichInput} provider that must\n            be an instance of one of the rich input types this state machine\n            was initialized with.\n\n        @return: The output from the wrapped L{IFiniteStateMachine}.\n        ' #NEWLINE# if IRichInput . providedBy ( input ) : #NEWLINE# #INDENT# symbol = input . symbol ( ) #NEWLINE# if ( not isinstance ( input , outputs . _richInputs ) ) : #NEWLINE# #INDENT# raise IllegalInput ( symbol ) #NEWLINE# #UNINDENT# outputs = self . _fsm . receive ( symbol ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# outputs = self . _fsm . receive ( input ) #NEWLINE# #UNINDENT# for output in outputs : #NEWLINE# #INDENT# adapter = self . _inputContext . get ( output , ( lambda o : o ) ) #NEWLINE# self . _world . output ( output , adapter ( input ) ) #NEWLINE# #UNINDENT# return outputs