RangeMarker (int startOffset, int endOffset) { ProperTextRange injRange = new ProperTextRange(startOffset, endOffset); // include prefixes/suffixes in guarded ranges - they can't be edited TextRange editable = ObjectUtils.notNull(intersectWithEditable(injRange), TextRange.EMPTY_RANGE); if (!injRange.equals(editable)) { ProperTextRange guarded = injRange.cutOut(editable.shiftLeft(editable.getStartOffset() - injRange.getStartOffset())); return createRangeMarker(guarded); } ProperTextRange hostRange = injectedToHost(injRange); return myDelegate.getRangeGuard(hostRange.getStartOffset(), hostRange.getEndOffset()); }