    deferred class
    	RECURSIVE_CURSOR_TREE [G]

    General
    	cluster: base
    	description: "Cursor trees with a recursive structure"

    Ancestors
    	CURSOR_TREE* [G]

    Queries
    	above: BOOLEAN
    	after: BOOLEAN
    	arity: INTEGER_32
    	before: BOOLEAN
    	below: BOOLEAN
    	breadth: INTEGER_32
    	changeable_comparison_criterion: BOOLEAN
    	child_item (i: INTEGER_32): G
    	child_tree (i: INTEGER_32): [like Current] RECURSIVE_CURSOR_TREE [G]
    	count: INTEGER_32
    	cursor: RECURSIVE_TREE_CURSOR [G]
    	depth: INTEGER_32
    	exhausted: BOOLEAN
    	extendible: BOOLEAN
    	for_all (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): BOOLEAN
    	has (v: G): BOOLEAN
    	index_of (v: [like item] G; i: INTEGER_32): INTEGER_32
    	is_empty: BOOLEAN
    	is_inserted (v: G): BOOLEAN
    	is_leaf: BOOLEAN
    	is_root: BOOLEAN
    	isfirst: BOOLEAN
    	islast: BOOLEAN
    	item: G
    	level: INTEGER_32
    	linear_for_all (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): BOOLEAN
    	linear_representation: LINEAR [G]
    	linear_there_exists (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): BOOLEAN
    	object_comparison: BOOLEAN
    	occurrences (v: G): INTEGER_32
    	off: BOOLEAN
    	parent_item: G
    	parent_tree: [like Current] RECURSIVE_CURSOR_TREE [G]
    	prunable: BOOLEAN
    	readable: BOOLEAN
    	subtree: [like Current] RECURSIVE_CURSOR_TREE [G]
    	there_exists (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): BOOLEAN
    	valid_cursor (p: CURSOR): BOOLEAN
    	valid_cursor_index (i: INTEGER_32): BOOLEAN
    	writable: BOOLEAN

    Commands
    	back
    	breadth_forth
    	compare_objects
    	compare_references
    	container_fill (other: CONTAINER [G])
    	do_all (action: PROCEDURE [ANY, TUPLE [G]])
    	do_if (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	down (i: INTEGER_32)
    	extend (v: G)
    	fill (other: CURSOR_TREE [G])
    	fill_from_active (other: CURSOR_TREE [G])
    	forth
    	go_last_child
    	go_to (p: CURSOR)
    	level_back
    	level_forth
    	linear_do_all (action: PROCEDURE [ANY, TUPLE [G]])
    	linear_do_if (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	merge_left (other: CURSOR_TREE [G])
    	merge_right (other: CURSOR_TREE [G])
    	postorder_forth
    	postorder_start
    	preorder_forth
    	put (v: G)
    	put_left (v: G)
    	put_right (v: G)
    	remove
    	replace (v: G)
    	search (v: [like item] G)
    	start
    	start_on_level (l: INTEGER_32)
    	up
    	wipe_out

    Constraints
    	coherency