/**
  * tries to find <code>this</code> in <code>s</code> starting at position <code>start</code>.
  *
  * @return the position of the match within <code>s</code>, i.e. <b>not</b> relative to <code>
  *     start</code>. If not match can be found, -1 is returned.
  */
 public int find(CharSequence s, int start) {
   analyzed = false;
   in.setSource(s, start);
   out.setLength(0);
   int l = s.length();
   while (start < l) {
     try {
       a = dfa.match(in, out, smd);
     } catch (java.io.IOException e) {
       throw new Error("impossible", e);
     }
     if (a != null && a != DfaRun.EOF) return start;
     start += 1;
     in.read();
   }
   return -1;
 }
 /**
  * tests whether <code>this</code> matches a prefix of <code>s</code> starting at position <code>
  * pos</code>.
  *
  * @return the length of the match or -1.
  */
 public int atStartOf(CharSequence s, int pos) {
   analyzed = false;
   in.setSource(s, pos);
   out.setLength(0);
   try {
     a = dfa.match(in, out, smd);
   } catch (java.io.IOException e) {
     throw new Error("impossible", e);
   }
   return (a != null && a != DfaRun.EOF) ? out.length() : -1;
 }