    class
    	EV_ADD_REMOVE_LIST

    General
    	cluster: contrib_mswin
    	description:
    		"Abstraction of a list in which you can add/modify/remove items.
    		+-----------------------------+
    		| `first'                     |
    		|  .....                      |
    		| `last'                      |
    		+-----------------------------+
    		+-----------------------------+
    		|                             |
    		+-----------------------------+
    		+------+ +---------+ +--------+
    		| Add  | |  Apply  | | Remove |
    		+------+ +---------+ +--------+"
    	create: make

    Ancestors
    	EV_VERTICAL_BOX

    Action sequences
    	add_actions: EV_NOTIFY_ACTION_SEQUENCE
    	conforming_pick_actions: EV_NOTIFY_ACTION_SEQUENCE
    	dock_ended_actions: EV_NOTIFY_ACTION_SEQUENCE
    	dock_started_actions: EV_NOTIFY_ACTION_SEQUENCE
    	docked_actions: EV_DOCKABLE_SOURCE_ACTION_SEQUENCE
    	drop_actions: EV_PND_ACTION_SEQUENCE
    	focus_in_actions: EV_NOTIFY_ACTION_SEQUENCE
    	focus_out_actions: EV_NOTIFY_ACTION_SEQUENCE
    	key_press_actions: EV_KEY_ACTION_SEQUENCE
    	key_press_string_actions: EV_KEY_STRING_ACTION_SEQUENCE
    	key_release_actions: EV_KEY_ACTION_SEQUENCE
    	modify_actions: EV_NOTIFY_ACTION_SEQUENCE
    	mouse_wheel_actions: EV_INTEGER_ACTION_SEQUENCE
    	pick_actions: EV_PND_START_ACTION_SEQUENCE
    	pick_ended_actions: EV_PND_FINISHED_ACTION_SEQUENCE
    	pointer_button_press_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE
    	pointer_button_release_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE
    	pointer_double_press_actions: EV_POINTER_BUTTON_ACTION_SEQUENCE
    	pointer_enter_actions: EV_NOTIFY_ACTION_SEQUENCE
    	pointer_leave_actions: EV_NOTIFY_ACTION_SEQUENCE
    	pointer_motion_actions: EV_POINTER_MOTION_ACTION_SEQUENCE
    	remove_actions: EV_NOTIFY_ACTION_SEQUENCE
    	resize_actions: EV_GEOMETRY_ACTION_SEQUENCE

    Queries
    	accept_cursor: EV_POINTER_STYLE
    	actual_drop_target_agent: FUNCTION [ANY, TUPLE [INTEGER_32, INTEGER_32], EV_ABSTRACT_PICK_AND_DROPABLE]
    	after: BOOLEAN
    	background_color: EV_COLOR
    	background_pixmap: EV_PIXMAP
    	before: BOOLEAN
    	border_width: INTEGER_32
    	client_height: INTEGER_32
    	client_width: INTEGER_32
    	count: INTEGER_32
    	cursor: EV_DYNAMIC_LIST_CURSOR [EV_WIDGET]
    	data: ANY
    	default_key_processing_handler: PREDICATE [ANY, TUPLE [EV_KEY]]
    	deny_cursor: EV_POINTER_STYLE
    	exhausted: BOOLEAN
    	Extendible: BOOLEAN
    	first: [like item] EV_WIDGET
    	for_all (test: FUNCTION [ANY, TUPLE [EV_WIDGET], BOOLEAN]): BOOLEAN
    	foreground_color: EV_COLOR
    	Full: BOOLEAN
    	has (v: [like item] EV_WIDGET): BOOLEAN
    	has_capture: BOOLEAN
    	has_focus: BOOLEAN
    	has_recursive (an_item: [like item] EV_WIDGET): BOOLEAN
    	height: INTEGER_32
    	help_context: FUNCTION [ANY, TUPLE, EV_HELP_CONTEXT]
    	i_th alias "[]" (i: INTEGER_32): [like item] EV_WIDGET
    	id_freed: BOOLEAN
    	id_object (an_id: INTEGER_32): IDENTIFIED
    	index: INTEGER_32
    	index_of (v: [like item] EV_WIDGET; i: INTEGER_32): INTEGER_32
    	index_set: INTEGER_INTERVAL
    	infix "@" (i: INTEGER_32): [like item] EV_WIDGET
    	is_destroyed: BOOLEAN
    	is_displayed: BOOLEAN
    	is_dockable: BOOLEAN
    	is_docking_enabled: BOOLEAN
    	is_empty: BOOLEAN
    	is_equal (other: [like Current] EV_ADD_REMOVE_LIST): BOOLEAN
    	is_external_docking_enabled: BOOLEAN
    	is_external_docking_relative: BOOLEAN
    	is_homogeneous: BOOLEAN
    	is_inserted (v: EV_WIDGET): BOOLEAN
    	is_item_expanded (an_item: EV_WIDGET): BOOLEAN
    	is_parent_recursive (a_widget: EV_WIDGET): BOOLEAN
    	is_sensitive: BOOLEAN
    	is_show_requested: BOOLEAN
    	isfirst: BOOLEAN
    	islast: BOOLEAN
    	item: EV_WIDGET
    	last: [like item] EV_WIDGET
    	linear_representation: LINEAR [EV_WIDGET]
    	list: EV_LIST
    	may_contain (v: EV_WIDGET): BOOLEAN
    	merged_radio_button_groups: ARRAYED_LIST [EV_CONTAINER]
    	minimum_height: INTEGER_32
    	minimum_width: INTEGER_32
    	mode_is_drag_and_drop: BOOLEAN
    	mode_is_pick_and_drop: BOOLEAN
    	mode_is_target_menu: BOOLEAN
    	object_id: INTEGER_32
    	occurrences (v: [like item] EV_WIDGET): INTEGER_32
    	off: BOOLEAN
    	padding: INTEGER_32
    	padding_width: INTEGER_32
    	parent: EV_CONTAINER
    	parent_of_source_allows_docking: BOOLEAN
    	pebble: ANY
    	pebble_function: FUNCTION [ANY, TUPLE, ANY]
    	pebble_positioning_enabled: BOOLEAN
    	pebble_x_position: INTEGER_32
    	pebble_y_position: INTEGER_32
    	pointer_position: EV_COORDINATE
    	pointer_style: EV_POINTER_STYLE
    	prunable: BOOLEAN
    	readable: BOOLEAN
    	real_source: EV_DOCKABLE_SOURCE
    	real_target: EV_DOCKABLE_TARGET
    	retrieve_item_by_data (some_data: ANY; should_compare_objects: BOOLEAN): EV_WIDGET
    	retrieve_items_by_data (some_data: ANY; should_compare_objects: BOOLEAN): ARRAYED_LIST [EV_WIDGET]
    	same (other: EV_ANY): BOOLEAN
    	screen_x: INTEGER_32
    	screen_y: INTEGER_32
    	sequential_occurrences (v: [like item] EV_WIDGET): INTEGER_32
    	source_has_current_recursive (source: EV_DOCKABLE_SOURCE): BOOLEAN
    	target_name: STRING_GENERAL
    	text_field: EV_TEXT_FIELD
    	there_exists (test: FUNCTION [ANY, TUPLE [EV_WIDGET], BOOLEAN]): BOOLEAN
    	valid_cursor (p: CURSOR): BOOLEAN
    	valid_cursor_index (i: INTEGER_32): BOOLEAN
    	valid_index (i: INTEGER_32): BOOLEAN
    	vbox_count: INTEGER_32
    	vbox_is_empty: BOOLEAN
    	veto_dock_function: FUNCTION [ANY, TUPLE [EV_DOCKABLE_SOURCE], BOOLEAN]
    	width: INTEGER_32
    	writable: BOOLEAN
    	x_position: INTEGER_32
    	y_position: INTEGER_32

    Commands
    	append (s: SEQUENCE [[like item] EV_WIDGET])
    	back
    	center_pointer
    	copy (other: [like Current] EV_ADD_REMOVE_LIST)
    	destroy
    	disable_capture
    	disable_dockable
    	disable_docking
    	disable_external_docking
    	disable_external_docking_relative
    	disable_homogeneous
    	disable_item_expand (an_item: EV_WIDGET)
    	disable_pebble_positioning
    	disable_sensitive
    	dl_force (v: [like item] EV_WIDGET)
    	do_all (action: PROCEDURE [ANY, TUPLE [EV_WIDGET]])
    	do_if (action: PROCEDURE [ANY, TUPLE [EV_WIDGET]]; test: FUNCTION [ANY, TUPLE [EV_WIDGET], BOOLEAN])
    	enable_capture
    	enable_dockable
    	enable_docking
    	enable_external_docking
    	enable_external_docking_relative
    	enable_homogeneous
    	enable_item_expand (an_item: EV_WIDGET)
    	enable_pebble_positioning
    	enable_sensitive
    	extend (v: [like item] EV_WIDGET)
    	fill (other: CONTAINER [EV_WIDGET])
    	finish
    	force (v: [like item] EV_WIDGET)
    	forth
    	free_id
    	go_i_th (i: INTEGER_32)
    	go_to (p: CURSOR)
    	hide
    	merge_left (other: [like Current] EV_ADD_REMOVE_LIST)
    	merge_radio_button_groups (other: EV_CONTAINER)
    	merge_right (other: [like Current] EV_ADD_REMOVE_LIST)
    	move (i: INTEGER_32)
    	propagate_background_color
    	propagate_foreground_color
    	prune (v: [like item] EV_WIDGET)
    	prune_all (v: [like item] EV_WIDGET)
    	put (v: [like item] EV_WIDGET)
    	put_front (v: [like item] EV_WIDGET)
    	put_i_th (v: [like item] EV_WIDGET; i: INTEGER_32)
    	put_left (v: [like item] EV_WIDGET)
    	put_right (v: [like item] EV_WIDGET)
    	refresh_now
    	remove
    	remove_background_pixmap
    	remove_default_key_processing_handler
    	remove_help_context
    	remove_left
    	remove_pebble
    	remove_real_source
    	remove_real_target
    	remove_right
    	replace (v: [like item] EV_WIDGET)
    	reset
    	search (v: [like item] EV_WIDGET)
    	set_accept_cursor (a_cursor: [like accept_cursor] EV_POINTER_STYLE)
    	set_actual_drop_target_agent (an_agent: [like actual_drop_target_agent] FUNCTION [ANY, TUPLE [INTEGER_32, INTEGER_32], EV_ABSTRACT_PICK_AND_DROPABLE])
    	set_background_color (a_color: [like background_color] EV_COLOR)
    	set_background_pixmap (a_pixmap: EV_PIXMAP)
    	set_border_width (value: INTEGER_32)
    	set_data (some_data: [like data] ANY)
    	set_default_colors
    	set_default_key_processing_handler (a_handler: [like default_key_processing_handler] PREDICATE [ANY, TUPLE [EV_KEY]])
    	set_deny_cursor (a_cursor: [like deny_cursor] EV_POINTER_STYLE)
    	set_display_error_message (p: [like display_error_message] PROCEDURE [ANY, TUPLE [STRING_32]])
    	set_drag_and_drop_mode
    	set_focus
    	set_foreground_color (a_color: [like foreground_color] EV_COLOR)
    	set_help_context (an_help_context: [like help_context] FUNCTION [ANY, TUPLE, EV_HELP_CONTEXT])
    	set_is_entry_valid (f: [like is_entry_valid] FUNCTION [ANY, TUPLE [STRING_32], BOOLEAN])
    	set_minimum_height (a_minimum_height: INTEGER_32)
    	set_minimum_size (a_minimum_width, a_minimum_height: INTEGER_32)
    	set_minimum_width (a_minimum_width: INTEGER_32)
    	set_padding (value: INTEGER_32)
    	set_padding_width (value: INTEGER_32)
    	set_pebble (a_pebble: [like pebble] ANY)
    	set_pebble_function (a_function: FUNCTION [ANY, TUPLE, ANY])
    	set_pebble_position (a_x, a_y: INTEGER_32)
    	set_pick_and_drop_mode
    	set_pointer_style (a_cursor: [like pointer_style] EV_POINTER_STYLE)
    	set_real_source (dockable_source: EV_DOCKABLE_SOURCE)
    	set_real_target (a_target: EV_DOCKABLE_TARGET)
    	set_target_menu_mode
    	set_target_name (a_name: STRING_GENERAL)
    	set_veto_dock_function (a_function: FUNCTION [ANY, TUPLE [EV_DOCKABLE_SOURCE], BOOLEAN])
    	show
    	start
    	swap (i: INTEGER_32)
    	unmerge_radio_button_groups (other: EV_CONTAINER)
    	wipe_out

    Constraints
    	list not void
    	text field not void
    	add actions not void
    	remove actions not void
    	modify actions not void
    	add button not void
    	apply button not void
    	remove button not void