public boolean containsAll(Passage that) { if (that instanceof RangedPassage) { Iterator<VerseRange> iter = null; iter = ((RangedPassage) that).rangeIterator(RestrictionType.NONE); while (iter.hasNext()) { if (!contains(iter.next())) { return false; } } } else { Iterator<Key> iter = that.iterator(); while (iter.hasNext()) { if (!contains(iter.next())) { return false; } } } return true; }