    class
    	CURSOR_TREE_ITERATOR [G]

    General
    	cluster: base
    	description:
    		"Objects that are able to iterate over cursor trees,
    		on which they can perform repeated actions and tests according
    		to a number of predefined control structures such as ``if'',
    		``until'' and others."

    Ancestors
    	LINEAR_ITERATOR [G]
    	LINEAR_ITERATOR [G]
    	LINEAR_ITERATOR [G]

    Queries
    	breadth_for_all (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): BOOLEAN
    	breadth_there_exists (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): BOOLEAN
    	exhausted: BOOLEAN
    	internal_item_tuple: TUPLE [G]
    	invariant_value: BOOLEAN
    	item: G
    	item_tuple: TUPLE [G]
    	off: BOOLEAN
    	post_for_all (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): BOOLEAN
    	post_there_exists (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): BOOLEAN
    	pre_for_all (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): BOOLEAN
    	pre_there_exists (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): BOOLEAN
    	target: CURSOR_TREE [G]

    Commands
    	breadth_continue_for (action: PROCEDURE [ANY, TUPLE [G]]; n, k: INTEGER_32)
    	breadth_continue_search (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]; b: BOOLEAN)
    	breadth_continue_until (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	breadth_continue_while (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	breadth_do_all (action: PROCEDURE [ANY, TUPLE [G]])
    	breadth_do_for (action: PROCEDURE [ANY, TUPLE [G]]; i, n, k: INTEGER_32)
    	breadth_do_if (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	breadth_do_until (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	breadth_do_while (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	breadth_forth
    	breadth_search (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]; b: BOOLEAN)
    	breadth_start
    	breadth_until_do (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	breadth_while_continue (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	breadth_while_do (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	post_continue_for (action: PROCEDURE [ANY, TUPLE [G]]; n, k: INTEGER_32)
    	post_continue_search (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]; b: BOOLEAN)
    	post_continue_until (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	post_continue_while (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	post_do_all (action: PROCEDURE [ANY, TUPLE [G]])
    	post_do_for (action: PROCEDURE [ANY, TUPLE [G]]; i, n, k: INTEGER_32)
    	post_do_if (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	post_do_until (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	post_do_while (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	post_forth
    	post_search (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]; b: BOOLEAN)
    	post_start
    	post_until_do (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	post_while_continue (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	post_while_do (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	pre_continue_for (action: PROCEDURE [ANY, TUPLE [G]]; n, k: INTEGER_32)
    	pre_continue_search (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]; b: BOOLEAN)
    	pre_continue_until (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	pre_continue_while (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	pre_do_all (action: PROCEDURE [ANY, TUPLE [G]])
    	pre_do_for (action: PROCEDURE [ANY, TUPLE [G]]; i, n, k: INTEGER_32)
    	pre_do_if (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	pre_do_until (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	pre_do_while (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	pre_forth
    	pre_search (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]; b: BOOLEAN)
    	pre_start
    	pre_until_do (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	pre_while_continue (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	pre_while_do (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
    	set (s: [like target] CURSOR_TREE [G])
    	start
    	until_continue (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])