    class
    	PACKET

    General
    	cluster: abstract
    	description: "A data packet for sending and receiving on a socket."
    	create: make_from_managed_pointer, make

    Ancestors
    	ANY

    Queries
    	count: INTEGER_32
    	data: MANAGED_POINTER
    	element alias "[]" (i: INTEGER_32): CHARACTER_8
    	infix "@" (i: INTEGER_32): CHARACTER_8
    	is_equal (other: [like Current] PACKET): BOOLEAN
    	valid_position (i: INTEGER_32): BOOLEAN

    Commands
    	copy (other: [like Current] PACKET)
    	make (size: INTEGER_32)
    	make_from_managed_pointer (a_data: [like data] MANAGED_POINTER)
    	put_element (v: CHARACTER_8; i: INTEGER_32)

    Constraints
    	data not equal void