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 <-