Section Header

    + name := LINKED2_LIST[E];

    - comment := "Two way linked list with internal automatic memorization \ \of the last access .";

Section Inherit

    + parent_linked_collection:Expanded LINKED_COLLECTION[E];

Section LINKED2_LIST

    + first_link:LINK2[E];
        NULL when empty or gives access to the first element.

    + last_link:LINK2[E];
        NULL when empty or gives access to the last element.

    + mem_idx:INTEGER;

    + mem_lnk:LINK2[E];
        To speed up accessing, `mem_idx' and `mem_lnk' is the
        memory of the last access done. For example, after
        item(1), `mem_idx' is 1 and `mem_lnk' is `first_link'.
        When list is empty, `first_link' is NULL as well as
        `mem_lnk' and `mem_idx' is 0;

Section Public

    - create:SELF <-
        Make an empty list;

    - is_empty:BOOLEAN <-

    - add_first element:E <-

    - add_last element:E <-

    - add element:E to index:INTEGER <-

    - remove_first <-

    - remove index:INTEGER <-

    - first:E <-

    - last:E <-

    - item index:INTEGER :E <-

    - put element:E to index:INTEGER <-

    - count:INTEGER <-

    - set_all_with v:E <-

    - copy other:SELF <-

    - '==' Right 60 other:SELF :BOOLEAN <-

    - is_equal_map other:SELF :BOOLEAN <-

    - index_of x:E start start_index:INTEGER :INTEGER <-

    - reverse_index_of element:E start start_index:INTEGER :INTEGER <-

    - fast_index_of x:E start start_index:INTEGER :INTEGER <-

    - fast_reverse_index_of element:E start start_index:INTEGER :INTEGER <-

    - clear <-

    - from_collection model:COLLECTION[E] <-

    - slice low:INTEGER to up:INTEGER :SELF <-

    - occurrences element:E :INTEGER <-

    - fast_occurrences element:E :INTEGER <-

    - force element:E to index:INTEGER <-

    - all_default:BOOLEAN <-

    - remove_last <-

    - replace_all old_value:E with new_value:E <-

    - fast_replace_all old_value:E with new_value:E <-

    - reverse <-