anchor.diff:                              | _ -> () } }
   
   
  +  [<RequireQualifiedAccess>]
     type CollectState<'T,'U> =
        | NotStarted    of AsyncSeq<'T>
        | HaveInputEnumerator of IAsyncEnumerator<'T>
  
positive.code:      | Finished        
  
    let append (inp1: AsyncSeq<'T>) (inp2: AsyncSeq<'T>) : AsyncSeq<'T> =
          // Note: this is put outside the object deliberately, so the object doesn't permanently capture inp1 and inp2
          let initialState = NotStarted1 (inp1, inp2) 
          { new IAsyncEnumerable<'T> with 
                member x.GetEnumerator() = 
                    let state = ref initialState
                    { new IAsyncEnumerator<'T> with 
                          member x.MoveNext() = 
                              async { match !state with 
  
negative.code:                                                       return (if res then Some v else None) }
                          member x.Dispose() = () } }
      
    [<RequireQualifiedAccess>]
    type AppendState<'T> =
       | NotStarted1     of AsyncSeq<'T> * AsyncSeq<'T>
       | HaveEnumerator1 of IAsyncEnumerator<'T> * AsyncSeq<'T>
  