    class
    	EV_MODEL_LINE

    General
    	cluster: interface
    	description:
    		"Line from point_a to point_b.

    		point_a ----center---- point_b
    		"
    	create: make_with_points, make_with_positions, default_create

    Ancestors
    	DEBUG_OUTPUT*
    	EV_MODEL_ARROWED*
    	EV_MODEL_ATOMIC*
    	EV_MODEL_DOUBLE_POINTED*

    Action sequences
    	conforming_pick_actions: EV_NOTIFY_ACTION_SEQUENCE
    	drop_actions: EV_PND_ACTION_SEQUENCE
    	pick_actions: EV_PND_START_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

    Queries
    	accept_cursor: EV_POINTER_STYLE
    	angle: REAL_64
    	are_events_sended_to_group: BOOLEAN
    	arrow_size: INTEGER_32
    	bounding_box: EV_RECTANGLE
    	dashed_line_style: BOOLEAN
    	debug_output: STRING_8
    	deny_cursor: EV_POINTER_STYLE
    	foreground_color: EV_COLOR
    	group: EV_MODEL_GROUP
    	has_capture: BOOLEAN
    	id: INTEGER_32
    	id_object (an_id: INTEGER_32): IDENTIFIED
    	is_center_valid: BOOLEAN
    	is_end_arrow: BOOLEAN
    	is_hashable: BOOLEAN
    	is_in_group: BOOLEAN
    	is_in_world: BOOLEAN
    	Is_rotatable: BOOLEAN
    	Is_scalable: BOOLEAN
    	is_sensitive: BOOLEAN
    	is_show_requested: BOOLEAN
    	is_start_arrow: BOOLEAN
    	Is_transformable: BOOLEAN
    	length: INTEGER_32
    	line_width: INTEGER_32
    	object_id: INTEGER_32
    	pebble: ANY
    	pebble_function: FUNCTION [ANY, TUPLE, ANY]
    	point_a: EV_COORDINATE
    	point_a_x: INTEGER_32
    	point_a_x_relative: INTEGER_32
    	point_a_y: INTEGER_32
    	point_a_y_relative: INTEGER_32
    	point_b: EV_COORDINATE
    	point_b_relative: EV_COORDINATE
    	point_b_x: INTEGER_32
    	point_b_x_relative: INTEGER_32
    	point_b_y: INTEGER_32
    	point_b_y_relative: INTEGER_32
    	point_count: INTEGER_32
    	point_relative: EV_COORDINATE
    	pointer_style: EV_POINTER_STYLE
    	position_on_figure (a_x, a_y: INTEGER_32): BOOLEAN
    	target_name: STRING_GENERAL
    	world: EV_MODEL_WORLD
    	x: INTEGER_32
    	y: INTEGER_32

    Commands
    	center_invalidate
    	disable_capture
    	disable_dashed_line_style
    	disable_end_arrow
    	disable_events_sended_to_group
    	disable_sensitive
    	disable_start_arrow
    	enable_capture
    	enable_dashed_line_style
    	enable_end_arrow
    	enable_events_sended_to_group
    	enable_sensitive
    	enable_start_arrow
    	hide
    	remove_pebble
    	rotate (an_angle: REAL_64)
    	rotate_around (an_angle: REAL_64; ax, ay: INTEGER_32)
    	scale (a_scale: REAL_64)
    	scale_abs (a_scale: REAL_64)
    	scale_x (a_scale_x: REAL_64)
    	scale_x_abs (a_scale_x: REAL_64)
    	scale_y (a_scale_y: REAL_64)
    	scale_y_abs (a_scale_y: REAL_64)
    	set_accept_cursor (a_cursor: EV_POINTER_STYLE)
    	set_arrow_size (an_arrow_size: [like arrow_size] INTEGER_32)
    	set_deny_cursor (a_cursor: EV_POINTER_STYLE)
    	set_foreground_color (a_color: EV_COLOR)
    	set_line_width (a_width: INTEGER_32)
    	set_pebble (a_pebble: [like pebble] ANY)
    	set_pebble_function (a_function: FUNCTION [ANY, TUPLE, ANY])
    	set_point_a_position (ax, ay: INTEGER_32)
    	set_point_a_position_relative (ax, ay: INTEGER_32)
    	set_point_b_position (ax, ay: INTEGER_32)
    	set_point_b_position_relative (ax, ay: INTEGER_32)
    	set_pointer_style (a_cursor: [like pointer_style] EV_POINTER_STYLE)
    	set_target_name (a_name: STRING_GENERAL)
    	set_x (a_x: INTEGER_32)
    	set_x_y (a_x, a_y: INTEGER_32)
    	set_y (a_y: INTEGER_32)
    	show
    	transform (a_transformation: EV_MODEL_TRANSFORMATION)

    Constraints
    	point array has three points
    	second point is point a
    	thrid point is point b