ivate static String calculateContextPrefix(String frameText, FindResult ijFindResult, SearchTaskOptions options) {
    int contextStartOffset = ijFindResult.getStartOffset();
    int minAllowedContextStartOffset = ijFindResult.getStartOffset() - options.contextOneSideLength;
    if (minAllowedContextStartOffset < 0) {
      minAllowedContextStartOffset = 0;
    }

    char _char;
    while (contextStartOffset > minAllowedContextStartOffset) {
      _char = frameText.charAt(contextStartOffset - 1);
      if (_char != '\r' && _char != '\n') {
        contextStartOffset--;
      }
      else {
        break;
      }
    }

    boolean ellipsis = false;
    if (contextStartOffset > 0) {
      _char = frameText.charAt(contextStartOffset - 1);
      if (_char != '\n' && _char != '\r') {
        ellipsis = true;
      }
    }

    String str = frameText.substring(contextStartOffset, ijFindResult.getStartOffset());
    str = str.replace('\t', ' ');
    if (ellipsis) {
      str = ELLIPSIS + str;
    }
    return str;
  }


ivate static String calculateContextPrefix(String frameText, FindResult ijFindResult, SearchTaskOptions options) {