class
	LINEAR_ITERATOR [G]

General
	cluster: base
	description: "Objects that are able to iterate over linear structures"
	create: set

Ancestors
	ITERATOR* [G]

Queries
	exhausted: BOOLEAN
	for_all (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): BOOLEAN
	internal_item_tuple: TUPLE [G]
	invariant_value: BOOLEAN
	item: G
	item_tuple: TUPLE [G]
	off: BOOLEAN
	target: LINEAR [G]
	there_exists (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]): BOOLEAN

Commands
	continue_for (action: PROCEDURE [ANY, TUPLE [G]]; n, k: INTEGER_32)
	continue_search (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]; b: BOOLEAN)
	continue_until (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
	continue_while (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
	do_all (action: PROCEDURE [ANY, TUPLE [G]])
	do_for (action: PROCEDURE [ANY, TUPLE [G]]; i, n, k: INTEGER_32)
	do_if (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
	do_until (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
	do_while (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
	forth
	search (test: FUNCTION [ANY, TUPLE [G], BOOLEAN]; b: BOOLEAN)
	set (s: [like target] LINEAR [G])
	start
	until_continue (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
	until_do (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
	while_continue (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])
	while_do (action: PROCEDURE [ANY, TUPLE [G]]; test: FUNCTION [ANY, TUPLE [G], BOOLEAN])

Constraints
	target exists
	item tuple exists
	internal item tuple exists