private void insertBreakInMLC(ActionEvent e, RSyntaxTextArea textArea, int line) {

      Matcher m = null;
      int start = -1;
      int end = -1;
      try {
        start = textArea.getLineStartOffset(line);
        end = textArea.getLineEndOffset(line);
        String text = textArea.getText(start, end - start);
        m = p.matcher(text);
      } catch (BadLocationException ble) { // Never happens
        UIManager.getLookAndFeel().provideErrorFeedback(textArea);
        ble.printStackTrace();
        return;
      }

      if (m.lookingAt()) {

        String leadingWS = m.group(1);
        String mlcMarker = m.group(2);

        // If the caret is "inside" any leading whitespace or MLC
        // marker, move it to the end of the line.
        int dot = textArea.getCaretPosition();
        if (dot >= start && dot < start + leadingWS.length() + mlcMarker.length()) {
          // If we're in the whitespace before the very start of the
          // MLC though, just insert a normal newline
          if (mlcMarker.charAt(0) == '/') {
            handleInsertBreak(textArea, true);
            return;
          }
          textArea.setCaretPosition(end - 1);
        }

        boolean firstMlcLine = mlcMarker.charAt(0) == '/';
        boolean nested = appearsNested(textArea, line, start + leadingWS.length() + 2);
        String header = leadingWS + (firstMlcLine ? " * " : "*") + m.group(3);
        textArea.replaceSelection("\n" + header);
        if (nested) {
          dot = textArea.getCaretPosition(); // Has changed
          textArea.insert("\n" + leadingWS + " */", dot);
          textArea.setCaretPosition(dot);
        }

      } else {
        handleInsertBreak(textArea, true);
      }
    }