    class
    	C_STRING

    General
    	cluster: base
    	description: "A low-level string class to solve some garbage collector problems (mainly objects moving around) when interfacing with C APIs."
    	create: make_empty, make_by_pointer_and_count, make, share_from_pointer, share_from_pointer_and_count, make_by_pointer

    Ancestors
    	STRING_HANDLER

    Queries
    	bytes_count: INTEGER_32
    	capacity: INTEGER_32
    	Character_size: INTEGER_32
    	count: INTEGER_32
    	item: POINTER
    	managed_data: MANAGED_POINTER
    	string: STRING_8
    	substring (start_pos, end_pos: INTEGER_32): STRING_8

    Commands
    	fill_blank
    	fill_value (a_value: INTEGER_8)
    	make (a_string: STRING_GENERAL)
    	make_by_pointer (a_ptr: POINTER)
    	make_by_pointer_and_count (a_ptr: POINTER; a_length: INTEGER_32)
    	make_empty (a_length: INTEGER_32)
    	read_string_into (a_string: STRING_GENERAL)
    	read_substring_into (a_string: STRING_GENERAL; start_pos, end_pos: INTEGER_32)
    	set_count (a_count: INTEGER_32)
    	set_string (a_string: STRING_GENERAL)
    	set_substring (a_string: STRING_GENERAL; start_pos, end_pos: INTEGER_32)
    	share_from_pointer (a_ptr: POINTER)
    	share_from_pointer_and_count (a_ptr: POINTER; a_length: INTEGER_32)

    Constraints
    	managed data not void
    	count not negative