class interface
	EIFFEL_ROUTINE

feature -- arguments to the routine

	argument_types: ARRAY [EIFFEL_PARAMETER]
			-- types of arguments (Void if no arguments)

	arguments_conform (arguments: ARRAY [ANY]): BOOLEAN
		require
			arguments_not_void: arguments /= void

	valid_arguments (arguments: ARRAY [ANY]): BOOLEAN
		require
			same_size: (argument_types = void) implies (arguments = void) or else (argument_types.count = arguments.count);
			conform: arguments_conform (argument_types)
	
feature -- assertions

	postconditions: ARRAY [EIFFEL_ASSERTION]
			-- postcondotions for this routine (flat)

	preconditions: ARRAY [EIFFEL_ASSERTION]
			-- precondition for this routine (flat)
	
end -- class EIFFEL_ROUTINE