deferred class interface P_TRAVERSABLE[G] feature(s) from P_CONTAINER -- Status count: INTEGER -- Number of items in the container. ensure positive: Result >= 0 is_empty: BOOLEAN -- Is the container empty? is_readable: BOOLEAN -- Is the container currently readable? is_writable: BOOLEAN -- Is the structure writable? item: G -- Current item. require readable: is_readable; not_empty: not is_empty feature(s) from P_CONTAINER -- Update reset -- Remove all objects from the container. require writable: is_writable ensure done: is_empty feature(s) from P_CONTAINER -- Output out: STRING -- String representation. ensure is_copy: -- new string feature(s) from P_CONTAINER -- Utility is_void (x: ANY): BOOLEAN -- Void assertion for generic parameters. feature(s) from P_ONEWAY_TRAVERSABLE -- Iteration iterator: P_ITERATOR[G] -- Get a two-way iterator on this container. ensure done: Result /= Void; -- Result /= previous Result is_shallow_copy: is_protected: BOOLEAN -- Is an iterator inside the data structure? feature(s) from P_ONEWAY_TRAVERSABLE -- Lock status has_locked: BOOLEAN -- Does this container has one or more locked items? is_locked: BOOLEAN -- Is the current item locked? require meaningful: not is_empty ensure has_locked: Result = true implies has_locked invariant empty: is_empty = count = 0; valid_protect_count: protcount >= 0; protection: is_protected implies not is_writable; end of deferred P_TRAVERSABLE[G]