class
	PROCEDURE [BASE_TYPE, OPEN_ARGS -> TUPLE create default_create end]

General
	cluster: base
	description: 
		"Objects representing delayed calls to a procedure.
		with some operands possibly still open.
		
		Note: Features are the same as those of ROUTINE,
		with `apply' made effective, and no further
		redefinition of is_equal and copy."

Ancestors
	ROUTINE* [BASE_TYPE, OPEN_ARGS -> TUPLE create default_create end]

Queries
	Callable: BOOLEAN
	empty_operands: OPEN_ARGS
	hash_code: INTEGER_32
	is_equal (other: [like Current] PROCEDURE [BASE_TYPE, OPEN_ARGS]): BOOLEAN
	is_hashable: BOOLEAN
	open_count: INTEGER_32
	operands: OPEN_ARGS
	postcondition (args: [like operands] OPEN_ARGS): BOOLEAN
	precondition (args: [like operands] OPEN_ARGS): BOOLEAN
	target: ANY
	valid_operands (args: OPEN_ARGS): BOOLEAN
	valid_target (args: TUPLE): BOOLEAN

Commands
	adapt (other: [like Current] PROCEDURE [BASE_TYPE, OPEN_ARGS])
	apply
	call (args: OPEN_ARGS)
	copy (other: [like Current] PROCEDURE [BASE_TYPE, OPEN_ARGS])
	set_operands (args: OPEN_ARGS)