@{void} {insertAfter(Item e, Item after_item);} {If the reference count of \verb+store+ is greater than 1, then other collection objects are also using it as their implementation. Rather than changing its contents, a copy will be made ($O(n)$), and the reference counts will be updated. Finally, insert $e$ after the first occurrence of \verb+after_item+. If there is no such occurrence, a NULL pointer is passed to the {\Container}'s {\em insertAfter(Item,ContainerNode*)} method. Complexity depends on the storage medium. }@ @{void} {insertBefore(Item e, Item before_item);} { Similar to {\em insertAfter()} except that $e$ is inserted before the first occurrence of \verb+before_item+. }@ @{void} {prepend(Item e);} {After considering reference counts as above, call \rar{store}{prepend(e)}, which should insert $e$ at the beginning. Note that this usually has the same result as calling {\em insert}.}@ @{Item} {element(int i);} { Return the $i$th element, or the last element if $i > \mbox{this->size()}$ $O(n)$. }@ @{SequenceBase} {subsequence(int i, int j);} { Construct a new sequence and initialize it with $s[i] \ldots s[j]$, where $s[p]$ is the $p$th element of the current sequence. $O(n)$}@