src/main/java/com/basistech/tclre/Runtime.java
private boolean caltdissect(RuntimeSubexpression t, int begin, int end) {
        Dfa d;
        if (t == null) {
            return false;
        }
        assert t.op == '|';
        if (mem[t.retry] == TRIED) {
            return caltdissect(t.right, begin, end);
        }

        if (mem[t.retry] == UNTRIED) {
            d = new Dfa(this, t.left.machine);
            if (d.longest(begin, end, null) != end) {
                mem[t.retry] = TRIED;
                return caltdissect(t.right, begin, end);
            }
            mem[t.retry] = TRYING;
        }

        boolean cdmatch = cdissect(t.left, begin, end);
        if (cdmatch) {
            return true;
        }

        mem[t.retry] = TRIED;
        return caltdissect(t.right, begin, end);
    }
private boolean caltdissect(RuntimeSubexpression t, int begin, int end) {
        Dfa d;
        if (t == null) {
            return false;
        }
        assert t.op == '|';
        if (mem[t.retry] == TRIED) {
            return caltdissect(t.right, begin, end);
        }

        if (mem[t.retry] == UNTRIED) {
            d = new Dfa(this, t.left.machine);
            if (d.longest(begin, end, null) != end) {
                mem[t.retry] = TRIED;
                return caltdissect(t.right, begin, end);
            }
            mem[t.retry] = TRYING;
        }

        boolean cdmatch = cdissect(t.left, begin, end);
        if (cdmatch) {
            return true;
        }

        mem[t.retry] = TRIED;
        return caltdissect(t.right, begin, end);
    }
private boolean caltdissect ( RuntimeSubexpression t , int begin , int end ) { Dfa d ; if ( t == null ) { return false ; } assert t . op == ' ' ; if ( mem [ t . retry ] == TRIED ) { return caltdissect ( t . right , begin , end ) ; } if ( mem [ t . retry ] == UNTRIED ) { d = new Dfa ( this , t . left . machine ) ; if ( d . longest ( begin , end , null ) != end ) { mem [ t . retry ] = TRIED ; return caltdissect ( t . right , begin , end ) ; } mem [ t . retry ] = TRYING ; } boolean cdmatch = cdissect ( t . left , begin , end ) ; if ( cdmatch ) { return true ; } mem [ t . retry ] = TRIED ; return caltdissect ( t . right , begin , end ) ; }
/*
- caltdissect - determine alternative subexpression matches (w. complications)
^ static int caltdissect(struct vars *, struct Subre , int , int );
/ * - caltdissect - determine alternative subexpression matches ( w . complications ) ^ static int caltdissect ( struct vars * struct Subre int int ) ;