private void addHighlight(BaseDocument doc, PositionsBag obag, CsmReference csmReference, AttributeSet attrs) throws BadLocationException {
int usages[][] = CsmMacroExpansion.getUsages(doc, csmReference.getStartOffset());
if (usages != null) {
for (int i = 0; i < usages.length; i++) {
int startOffset = usages[i][0];
int endOffset = usages[i][1];
if (startOffset < doc.getLength() && endOffset > 0 && startOffset < endOffset) {
obag.addHighlight(
doc.createPosition((startOffset > 0) ? startOffset : 0),
doc.createPosition((endOffset < doc.getLength()) ? endOffset : doc.getLength()), attrs);
}
}
} else {
int startOffset = getDocumentOffset(doc, csmReference.getStartOffset());
int endOffset = getDocumentOffset(doc, csmReference.getEndOffset());
if (startOffset < doc.getLength() && endOffset > 0 && startOffset < endOffset) {
obag.addHighlight(doc.createPosition((startOffset > 0) ? startOffset : 0),
doc.createPosition((endOffset < doc.getLength()) ? endOffset : doc.getLength()), attrs);
}
}
}