I found a second problem in the token matching logic of BetweenTokensEditor.java. The logic for finding the start token is:
final int start = content.indexOf(startMarkerToken) + startMarkerToken.length();
if (start < 0)
However, as long as the startMarkerToken is defined, the sum of indexOf + length() will be non-negative whether the marker is found or not. If the marker length is 10, then the plugin will replace the page content starting from char 9 if the marker is not found, corrupting the page.
Obviously, the code should check whether indexOf(startMarkerToken) < 0, instead of checking the sum.