public boolean run(char[] s, int offset, int length) {int p = 0;int l = offset + length;for (int i = offset, cp = 0; i < l; i += Character.charCount(cp)) {p = step(p, cp = Character.codePointAt(s, i, l));if (p == -1) return false;}return accept.get(p);}

public virtual bool Run(char[] s, int offset, int length){int p = m_initial;int l = offset + length;for (int i = offset, cp = 0; i < l; i += Character.CharCount(cp)){p = Step(p, cp = Character.CodePointAt(s, i, l));if (p == -1) return false;}return m_accept[p];}
