/** * {@inheritDoc} * * @since 3.4 */ @Override public Iterator<Annotation> getAnnotationIterator(int offset, int length, boolean canStartBefore, boolean canEndAfter) { Iterator<Annotation> regionIterator= getRegionAnnotationIterator(offset, length, canStartBefore, canEndAfter); if (fAttachments.isEmpty()) return regionIterator; List<Iterator<Annotation>> iterators= new ArrayList<>(fAttachments.size() + 1); iterators.add(regionIterator); Iterator<Object> it= fAttachments.keySet().iterator(); while (it.hasNext()) { IAnnotationModel attachment= fAttachments.get(it.next()); if (attachment instanceof IAnnotationModelExtension2) iterators.add(((IAnnotationModelExtension2) attachment).getAnnotationIterator(offset, length, canStartBefore, canEndAfter)); else iterators.add(new RegionIterator(attachment.getAnnotationIterator(), attachment, offset, length, canStartBefore, canEndAfter)); } return new MetaIterator<>(iterators.iterator()); }
/** * {@inheritDoc} * * @since 3.4 */ @Override public Iterator<Annotation> getAnnotationIterator(int offset, int length, boolean canStartBefore, boolean canEndAfter) { Iterator<Annotation> regionIterator= getRegionAnnotationIterator(offset, length, canStartBefore, canEndAfter); if (fAttachments.isEmpty()) return regionIterator; List<Iterator<Annotation>> iterators= new ArrayList<>(fAttachments.size() + 1); iterators.add(regionIterator); Iterator<Object> it= fAttachments.keySet().iterator(); while (it.hasNext()) { IAnnotationModel attachment= fAttachments.get(it.next()); if (attachment instanceof IAnnotationModelExtension2) iterators.add(((IAnnotationModelExtension2) attachment).getAnnotationIterator(offset, length, canStartBefore, canEndAfter)); else iterators.add(new RegionIterator(attachment.getAnnotationIterator(), attachment, offset, length, canStartBefore, canEndAfter)); } return new MetaIterator<>(iterators.iterator()); }