private SoftWrap createSoftWrap(SoftWrap lastSoftWrap,
                                  int minWrapOffset,
                                  int maxWrapOffset,
                                  boolean preferMinOffset,
                                  int nonWhitespaceStartOffset,
                                  float nonWhitespaceStartX) {
    int wrapOffset = minWrapOffset >= maxWrapOffset ? minWrapOffset : calcSoftWrapOffset(minWrapOffset, maxWrapOffset, preferMinOffset);
    int indentInColumns = 1;
    int indentInPixels = mySoftWrapWidth;
    if (myRelativeIndent >= 0) {
      if (lastSoftWrap == null) {
        if (nonWhitespaceStartOffset >= 0 && nonWhitespaceStartOffset < wrapOffset) {
          indentInColumns += myEditor.offsetToLogicalPosition(nonWhitespaceStartOffset).column;
          indentInPixels += nonWhitespaceStartX;
        }
        indentInColumns += myRelativeIndent;
        indentInPixels += myRelativeIndent * myView.getPlainSpaceWidth();
      }
      else {
        indentInColumns = lastSoftWrap.getIndentInColumns();
        indentInPixels = lastSoftWrap.getIndentInPixels();
      }
    }
    SoftWrapImpl result = new SoftWrapImpl(new TextChangeImpl("\n" + StringUtil.repeatSymbol(' ', indentInColumns - 1), wrapOffset),
                                           indentInColumns, indentInPixels);
    myStorage.storeOrReplace(result);
    return result;
  }
private SoftWrap createSoftWrap(SoftWrap lastSoftWrap,
                                  int minWrapOffset,
                                  int maxWrapOffset,
                                  boolean preferMinOffset,
                                  int nonWhitespaceStartOffset,
                                  float nonWhitespaceStartX)