void (int i) { int data = getSegmentData(i); IElementType token = getSegments().unpackTokenFromData(data); Mapper mapper = getMappingDocument(token); MappedRange oldMapping = myRanges[i]; if (mapper != null) { freezeHighlighter(mapper); if (oldMapping != null) { if (oldMapping.mapper == mapper && oldMapping.outerToken == token) { mapper.updateMapping(i, oldMapping); } else { oldMapping.mapper.removeMapping(oldMapping); myRanges[i] = mapper.insertMapping(i, token); } } else { myRanges[i] = mapper.insertMapping(i, token); } } else { if (oldMapping != null) { freezeHighlighter(oldMapping.mapper); oldMapping.mapper.removeMapping(oldMapping); myRanges[i] = null; } } }