code: protected void doSplitTokenImpl(Token token, ITokenAcceptor result) {
  		String text = token.getText();
  		int indentation = computeIndentation(text);
  		if (indentation == -1 || indentation == currentIndentation) {
  			// no change of indentation level detected simply process the token
  			result.accept(token);
  		} else if (indentation > currentIndentation) {
  			// indentation level increased
  			splitIntoBeginToken(token, indentation, result);
  		} else if (indentation < currentIndentation) {
  			// indentation level decreased
  			int charCount = computeIndentationRelevantCharCount(text);
  			if (charCount > 0) {
  				// emit whitespace including newline
  				splitWithText(token, text.substring(0, charCount), result);	
  			}
  			// emit end tokens at the beginning of the line
  			decreaseIndentation(indentation, result);
  			if (charCount != text.length()) {
  				handleRemainingText(token, text.substring(charCount), indentation, result);
  			}
  		} else {
  			throw new IllegalStateException(String.valueOf(indentation));
  		}
  	}
docs: The token was previously determined as potentially to-be-splitted thus we
  emit additional indentation or dedenting tokens.