    class
    	FTP_PROTOCOL

    General
    	cluster: transfer
    	description: "FTP protocol"
    	create: make

    Ancestors
    	NETWORK_RESOURCE*

    Queries
    	address: FTP_URL
    	address_exists: BOOLEAN
    	assertion_violation: BOOLEAN
    	bytes_transferred: INTEGER_32
    	Check_instruction: INTEGER_32
    	Class_invariant: INTEGER_32
    	class_name: STRING_8
    	Com_exception: INTEGER_32
    	count: INTEGER_32
    	Create_on_deferred: INTEGER_32
    	Default_buffer_size: INTEGER_32
    	Developer_exception: INTEGER_32
    	developer_exception_name: STRING_8
    	Dollar_applied_to_melted_feature: INTEGER_32
    	Eiffel_runtime_fatal_error: INTEGER_32
    	Eiffel_runtime_panic: INTEGER_32
    	error: BOOLEAN
    	error_code: INTEGER_32
    	error_text (code: INTEGER_32): STRING_8
    	exception: INTEGER_32
    	Exception_in_signal_handler: INTEGER_32
    	exception_trace: STRING_8
    	External_exception: INTEGER_32
    	Floating_point_exception: INTEGER_32
    	has_packet: BOOLEAN
    	hash_code: INTEGER_32
    	Incorrect_inspect_value: INTEGER_32
    	Io_exception: INTEGER_32
    	is_binary_mode: BOOLEAN
    	is_count_valid: BOOLEAN
    	is_developer_exception: BOOLEAN
    	is_developer_exception_of_name (name: STRING_8): BOOLEAN
    	is_equal (other: [like Current] FTP_PROTOCOL): BOOLEAN
    	is_hashable: BOOLEAN
    	is_logged_in: BOOLEAN
    	is_mode_set: BOOLEAN
    	is_open: BOOLEAN
    	is_packet_pending: BOOLEAN
    	is_proxy_supported: BOOLEAN
    	is_proxy_used: BOOLEAN
    	is_readable: BOOLEAN
    	is_signal: BOOLEAN
    	is_system_exception: BOOLEAN
    	is_writable: BOOLEAN
    	last_packet: STRING_8
    	last_packet_size: INTEGER_32
    	location: STRING_8
    	Loop_invariant: INTEGER_32
    	Loop_variant: INTEGER_32
    	meaning (except: INTEGER_32): STRING_8
    	mode: INTEGER_32
    	No_more_memory: INTEGER_32
    	Number_of_codes: INTEGER_32
    	Operating_system_exception: INTEGER_32
    	original_class_name: STRING_8
    	original_exception: INTEGER_32
    	original_recipient_name: STRING_8
    	original_tag_name: STRING_8
    	Out_of_memory: INTEGER_32
    	passive_mode: BOOLEAN
    	port: INTEGER_32
    	Postcondition: INTEGER_32
    	Precondition: INTEGER_32
    	proxy_host: STRING_8
    	proxy_port: INTEGER_32
    	read_buffer_size: INTEGER_32
    	read_mode: BOOLEAN
    	recipient_name: STRING_8
    	Rescue_exception: INTEGER_32
    	Resumption_failed: INTEGER_32
    	Retrieve_exception: INTEGER_32
    	Routine_failure: INTEGER_32
    	Runtime_check_exception: INTEGER_32
    	Runtime_io_exception: INTEGER_32
    	service: STRING_8
    	Signal_exception: INTEGER_32
    	Supports_multiple_transactions: BOOLEAN
    	tag_name: STRING_8
    	timeout: INTEGER_32
    	transfer_initiated: BOOLEAN
    	valid_code (c: INTEGER_32): BOOLEAN
    	valid_mode (n: INTEGER_32): BOOLEAN
    	Void_assigned_to_expanded: INTEGER_32
    	Void_call_target: INTEGER_32
    	write_mode: BOOLEAN

    Commands
    	catch (code: INTEGER_32)
    	close
    	die (code: INTEGER_32)
    	dispose
    	ignore (code: INTEGER_32)
    	initiate_transfer
    	message_on_failure
    	no_message_on_failure
    	open
    	put (other: DATA_RESOURCE)
    	raise (name: STRING_8)
    	raise_retrieval_exception (name: STRING_8)
    	read
    	reset_error
    	reset_proxy
    	reuse_connection (other: DATA_RESOURCE)
    	set_active_mode
    	set_binary_mode
    	set_passive_mode
    	set_password (pw: STRING_8)
    	set_port (port_no: INTEGER_32)
    	set_proxy (host: STRING_8; port_no: INTEGER_32)
    	set_proxy_information (pi: PROXY_INFORMATION)
    	set_read_buffer_size (n: INTEGER_32)
    	set_read_mode
    	set_text_mode
    	set_timeout (n: INTEGER_32)
    	set_username (un: STRING_8)
    	set_write_mode