public boolean isChildOf(@Nullable final WrapImpl wrap, LeafBlockWrapper leaf) { if (getIgnoreParentWraps()) return false; if (leaf != null && myIgnoredWraps != null) { Collection<LeafBlockWrapper> leaves = myIgnoredWraps.get(wrap); if (leaves != null && leaves.contains(leaf)) { return false; } } for (WrapImpl parent : myParents) { if (parent == wrap) return true; if (parent.isChildOf(wrap, leaf)) return true; } return false; }
/** * Allows to register given wrap as a parent of the current wrap. * * <p><code>'Parent'</code> wrap registration here means that {@link #isChildOf(WrapImpl, * LeafBlockWrapper)} returns <code>'true'</code> if given wrap is used as a <code>'parent'</code> * argument. * * @param parent parent wrap to register for the current wrap */ void registerParent(@Nullable WrapImpl parent) { if (parent == this) return; if (parent == null) return; if (parent.isChildOf(this, null)) return; if (myParents == emptyParentsSet) myParents = new HashSet<WrapImpl>(5); myParents.add(parent); }