@Override public void set(final C e) { super.set(e); // Calling the decorated ListIterator's method should throw an // exception if it fails; it is assumed here then that the operation // succeeds lastElement.setParent(null); e.setParent(parent); }
@Override public C set(final int index, final C element) { final C result = set(index, element); if (result != null) { result.setParent(null); } return result; }
@Override public C remove(final int index) { final C result = super.remove(index); if (result != null) { result.setParent(null); } return result; }
@Override public boolean add(final C e) { final boolean result = super.add(e); if (result) { e.setParent(parent); } return result; }
private static final <P, C extends MutableChild<? super P>> void setChildrenParent( final Iterable<C> children, final P parent) { for (final C child : children) { if (child != null) { child.setParent(parent); } } }
@Override public boolean remove(final Object o) { final boolean result = super.remove(o); if (result) { @SuppressWarnings("unchecked") final C element = (C) o; element.setParent(null); } return result; }
public void addChild(C child, int index) { child.setParent(this); getChildren().add(index, child); }
@Override public void add(final int index, final C element) { super.add(index, element); element.setParent(parent); }