General purpose resizable ARRAYs as they are define in the Eiffel language definition.
The lower bound can be any arbitrary value, even a negative one.
This implementation uses only one chunk of memory, the storage area which is a NATIVE_ARRAY. One must
keep in mind that this internal storage area is always kept left align. Thus, you can expect good
performances while using an ARRAY to modelize a stack behavior with add_last / last / remove_last.
Conversely add_first and remove_first are likely to slow down your program if they are too often
used. If the fact that lower is always stuck to 0 is not a problem for you, also consider FAST_ARRAY to
get better performances.
Do not lose any
item whose index is in both [lower .. upper] and
[min_index .. max_index]. New positions if any are
initialized with the appropriate default value.
The basic = is used
for comparison of items and indices are not considered (for
example this routine may yeld True with Current indexed in
range [1..2] and other indexed in range [2..3]).