deferred class
	FILE

General
	cluster: base.kernel
	description: "Sequential files, viewed as persistent sequences of characters"

Ancestors
	IO_MEDIUM
	SEQUENCE [G]
	UNBOUNDED [G]

Queries
	access_date: INTEGER
	access_exists: BOOLEAN
	after: BOOLEAN
	before: BOOLEAN
	change_date: INTEGER
	changeable_comparison_criterion: BOOLEAN
	count: INTEGER
	date: INTEGER
	descriptor: INTEGER
	descriptor_available: BOOLEAN
	end_of_file: BOOLEAN
	exhausted: BOOLEAN
	exists: BOOLEAN
	extendible: BOOLEAN
	file_info: UNIX_FILE_INFO
	file_pointer: POINTER
	file_prunable: BOOLEAN
	file_readable: BOOLEAN
	file_writable: BOOLEAN
	for_all (test: FUNCTION [ANY, TUPLE [CHARACTER], BOOLEAN]): BOOLEAN
	Full: BOOLEAN
	group_id: INTEGER
	has (v: [like item] CHARACTER): BOOLEAN
	index: INTEGER
	index_of (v: [like item] CHARACTER; i: INTEGER): INTEGER
	inode: INTEGER
	is_access_executable: BOOLEAN
	is_access_owner: BOOLEAN
	is_access_readable: BOOLEAN
	is_access_writable: BOOLEAN
	is_block: BOOLEAN
	is_character: BOOLEAN
	is_closed: BOOLEAN
	is_creatable: BOOLEAN
	is_device: BOOLEAN
	is_directory: BOOLEAN
	is_empty: BOOLEAN
	is_executable: BOOLEAN
	is_fifo: BOOLEAN
	is_inserted (v: CHARACTER): BOOLEAN
	is_open_append: BOOLEAN
	is_open_read: BOOLEAN
	is_open_write: BOOLEAN
	is_owner: BOOLEAN
	is_plain: BOOLEAN
	is_plain_text: BOOLEAN
	is_readable: BOOLEAN
	is_setgid: BOOLEAN
	is_setuid: BOOLEAN
	is_socket: BOOLEAN
	is_sticky: BOOLEAN
	is_symlink: BOOLEAN
	is_writable: BOOLEAN
	item: CHARACTER
	last_character: CHARACTER
	last_double: DOUBLE
	last_integer: INTEGER
	last_real: REAL
	last_string: STRING
	lastchar: CHARACTER
	lastdouble: DOUBLE
	lastint: INTEGER
	lastreal: REAL
	laststring: STRING
	linear_representation: LINEAR [CHARACTER]
	links: INTEGER
	name: STRING
	object_comparison: BOOLEAN
	occurrences (v: CHARACTER): INTEGER
	off: BOOLEAN
	owner_name: STRING
	position: INTEGER
	protection: INTEGER
	readable: BOOLEAN
	retrieved: ANY
	separator: CHARACTER
	support_storable: BOOLEAN
	there_exists (test: FUNCTION [ANY, TUPLE [CHARACTER], BOOLEAN]): BOOLEAN
	user_id: INTEGER
	writable: BOOLEAN

Commands
	add_permission (who, what: STRING)
	append (f: [like Current] FILE)
	back
	basic_store (object: ANY)
	change_group (new_group_id: INTEGER)
	change_mode (mask: INTEGER)
	change_name (new_name: STRING)
	change_owner (new_owner_id: INTEGER)
	close
	compare_objects
	compare_references
	copy_to (file: [like Current] FILE)
	create_read_write
	delete
	dispose
	do_all (action: PROCEDURE [ANY, TUPLE [CHARACTER]])
	do_if (action: PROCEDURE [ANY, TUPLE [CHARACTER]]; test: FUNCTION [ANY, TUPLE [CHARACTER], BOOLEAN])
	extend (v: CHARACTER)
	fd_open_append (fd: INTEGER)
	fd_open_read (fd: INTEGER)
	fd_open_read_append (fd: INTEGER)
	fd_open_read_write (fd: INTEGER)
	fd_open_write (fd: INTEGER)
	fill (other: CONTAINER [CHARACTER])
	finish
	flush
	force (v: [like item] CHARACTER)
	forth
	general_store (object: ANY)
	go (abs_position: INTEGER)
	independent_store (object: ANY)
	link (fn: STRING)
	make (fn: STRING)
	make_create_read_write (fn: STRING)
	make_open_append (fn: STRING)
	make_open_read (fn: STRING)
	make_open_read_append (fn: STRING)
	make_open_read_write (fn: STRING)
	make_open_write (fn: STRING)
	move (offset: INTEGER)
	new_line
	next_line
	open_append
	open_read
	open_read_append
	open_read_write
	open_write
	prune_all (v: [like item] CHARACTER)
	put (v: [like item] CHARACTER)
	put_boolean (b: BOOLEAN)
	put_character (c: CHARACTER)
	put_double (d: DOUBLE)
	put_integer (i: INTEGER)
	put_new_line
	put_real (r: REAL)
	put_string (s: STRING)
	putbool (b: BOOLEAN)
	putchar (c: CHARACTER)
	putdouble (d: DOUBLE)
	putint (i: INTEGER)
	putreal (r: REAL)
	putstring (s: STRING)
	read_character
	read_double
	read_integer
	read_line
	read_real
	read_stream (nb_char: INTEGER)
	read_word
	readchar
	readdouble
	readint
	readline
	readreal
	readstream (nb_char: INTEGER)
	readword
	recede (abs_position: INTEGER)
	recreate_read_write (fname: STRING)
	remove_permission (who, what: STRING)
	reopen_append (fname: STRING)
	reopen_read (fname: STRING)
	reopen_read_append (fname: STRING)
	reopen_read_write (fname: STRING)
	reopen_write (fname: STRING)
	reset (fn: STRING)
	search (v: [like item] CHARACTER)
	set_access (time: INTEGER)
	set_date (time: INTEGER)
	stamp (time: INTEGER)
	start
	touch
	wipe_out

Constraints
	valid mode
	name exists
	name not empty