// Ta metoda zwraca obiekt typu Iterator dla tej klasy LinkedStack.
public Iterator<Linkable> Iterator() {
    // Poniżej znajduje się definicja LinkedIterator jako klasy lokalnej.
    class LinkedIterator implements Iterator<Linkable> {
        Linkable current;

        // W konstruktorze użyto prywatnego pola klasy nadrzędnej.
        public LinkedIterator() { current = head; }

        // Trzy poniższe metody są zdefiniowane przez interfejs Iterator.
        public boolean hasNext() { return current != null; }

        public Linkable next() {
            if (current == null)
                throw new java.util.NoSuchElementException();
            Linkable value = current;
            current = current.getNext();
            return value;
        }

        public void remove() { throw new UnsupportedOperationException(); }
    }

    // tworzy i zwraca egzemplarz właśnie zdefiniowanej klasy
    return new LinkedIterator();
}
