// Test case for Issue panacekcz#8:
// https://github.com/panacekcz/checker-framework/issues/8

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.checkerframework.checker.index.qual.NonNegative;

public class RegexMatcher {
  static void m(String p, String s) {
    Matcher matcher = Pattern.compile(p).matcher(s);
    // The following line cannot be used as a test, because the relation of matcher to p is not
    // tracked, so the upper bound is not known.

    // s.substring(matcher.start(), matcher.end());

    @NonNegative int i;
    i = matcher.start();
    i = matcher.end();
    // :: error: (assignment)
    i = matcher.start(1);
    // :: error: (assignment)
    i = matcher.end(1);
  }
}
