Iterator<Attribute> () { if (isEmpty()) return Collections.emptyIterator(); return new Iterator<Attribute>() { int i; @Override public boolean hasNext() { return i < size(); } @Override public Attribute next() { return get(i++); } @Override public void remove() { throw ImmutableElement.immutableError(ImmutableSameTypeAttributeList.this); } }; }