+ public final String startSequence;
+ public final String endSequence;
+ public final TerminationStrategy termination;
+
+ public Terminator(final String startSequence, TerminationStrategy termination) {
+ this.startSequence = startSequence;
+ this.endSequence = null;
+ this.termination = termination;
+ }
+
+ public Terminator(final String startSequence, final String endSequence, TerminationStrategy termination) {
+ this.startSequence = startSequence;
+ this.endSequence = endSequence;
+ this.termination = termination;
+ }
+
+ public boolean matches(String source, int index) {
+ // boundary check
+ if (source.length() < (index + startSequence.length()))
+ return false;
+
+ // match check
+ for (int i = 0; i < startSequence.length(); i++)
+ if (startSequence.charAt(i) != source.charAt(index + i))
+ return false;