#NEWLINE# @ make_call_method ( [ values . W_Object , default ( values . W_Object , None ) ] , simple = False ) #NEWLINE# def call_with_extra_info( self , arg , fail , env , cont , app ) : #NEWLINE# #INDENT# from pycket.interpreter import return_value #NEWLINE# if isinstance ( arg , W_StructType ) : #NEWLINE# #INDENT# w_val = arg . read_prop_precise ( self . property ) #NEWLINE# if ( w_val is not None ) : #NEWLINE# #INDENT# return return_value ( w_val , env , cont ) #NEWLINE# #UNINDENT# #UNINDENT# else : #NEWLINE# #INDENT# if ( arg . struct_type ( ) is not None ) : #NEWLINE# #INDENT# return arg . get_prop ( self . property , env , cont ) #NEWLINE# #UNINDENT# else : #NEWLINE# #INDENT# if ( fail is not None ) : #NEWLINE# #INDENT# if fail . iscallable ( ) : #NEWLINE# #INDENT# return fail . call_with_extra_info ( [ ] , env , cont , app ) #NEWLINE# #UNINDENT# return return_value ( env , env , cont ) #NEWLINE# #UNINDENT# #UNINDENT# #UNINDENT# raise SchemeException ( ( '%s-accessor: expected %s? but got %s' % ( self . property . name , self . property . name , arg . tostring ( ) ) ) )