public void annotationUpdated(AnnotationEvent e) { if (e.getType() == AnnotationEvent.FEATURES_UPDATED) { if (!disableListener) { Annotation annot = (Annotation) e.getSource(); // lets find out which annotation set it belongs to AnnotationSet as = null; if (getAnnotations().contains(annot)) { as = getAnnotations(); } else { Map<String, AnnotationSet> ass = getNamedAnnotationSets(); if (ass == null) return; Iterator<String> namesIter = getNamedAnnotationSets().keySet().iterator(); while (namesIter.hasNext()) { String name = namesIter.next(); as = getNamedAnnotationSets().get(name); if (as.contains(annot)) { break; } else as = null; } } if (as == null) return; for (String docID : combinedDocumentIds) { OffsetDetails od = getOffsetDetails(docID, as.getName(), annot); if (od == null) continue; Annotation toUse = od.getOriginalAnnotation(); toUse.setFeatures(annot.getFeatures()); } } } }