class ScopedMap implements ScopeSubscriber, Map<K, V> {

    public Collection<V> values() {
        final Collection<Stack<ScopedMapItem<V>>> stacks = map.values();
        final Collection<V> values = new java.util.ArrayList<V>();

        for (Stack<ScopedMapItem<V>> stack : stacks) {
            if (!stack.empty()) {
                final ScopedMapItem<V> item = stack.peek();
                final V value = item.getValue();
                values.add(value);
            }
        }

        return values;
    }

    public  ScopedMap(final ScopeObserver scopeObserver);

}