anchor.diff:          | '?' -> //zero or one 
               let e =pop()
               let s = state rs (Split, Some(e.start), None)
  -            push(frag(s, append(e.out, list1(s.out1))))
  +            push(frag(s, append(e.out, list1(State_out1(s)))))
           | '*' ->
               let e = pop()
               let s = state rs (Split, Some(e.start), None)
  -            e.out <- patch(e.out, s)
  -            push(frag(s, list1(s.out1)))
  +            patch(e.out, s)
  +            push(frag(s, list1(State_out1(s))))
           | '+' -> //one or more
               let e = pop()
               let s = state rs (Split, Some(e.start), None)
  -            e.out <- patch(e.out, s)
  -            push(frag(e.start, list1(s.out1)))
  +            patch(e.out, s)
  +            push(frag(e.start, list1(State_out1(s))))
           | c -> //default
               let s = state rs (Char c, None, None)
  -            push(frag(s, list1(s.out)))
  +            push(frag(s, list1(State_out(s))))
   
       let e = pop()
       if (stack.Count>0) then
           None
       else
  -        e.out <- patch(e.out, rs.matchstate)
  +        patch(e.out, rs.matchstate)
           Some(e.start)
   
   type List=System.Collections.Generic.List<State>
  
positive.code:     let s = {lastList=0;c=c;out=out;out1=out1}
      s
  
  type Ptrlist= State option list 
  
  (*
   * A partially built NFA without the matching state filled in.
   * Frag.start points at the start state.
  
negative.code: //[<Struct>]
  type State={
      c:NFAState
      mutable out:State option
      mutable out1:State option
      mutable lastList:int
  }
  type RegexState(matchstate:State,nstate:int)=
  