anchor.diff:  
   [<Test>]
   let ``bind should pass cancellation token``() =
  -    let i = ref 0
  -    let task = Task.TaskBuilderWithToken()
  +    let i = ref 0    
       let cts = new CancellationTokenSource()
       let t = 
  -        task {
  +        task' {
               let! v1 = Task.Factory.StartNew(fun () -> 1)
               let body2 x = 
                   incr i
  
positive.code: let ``for``() =
      let i = ref 0
      let s = [1; 2; 3; 4]
      let task = Task.TaskBuilderWithToken(continuationOptions = TaskContinuationOptions.ExecuteSynchronously)
      let t =
          task {
              for x in s do
                  i := !i + x
                  do! Task.Factory.StartNew ignore
  
negative.code:     | _ -> Assert.Fail "task should have errored"
  
  [<Test>]
  let ``canceled task``() =    
      let cts = new CancellationTokenSource()
      let t = 
          task' {
              cts.Token.ThrowIfCancellationRequested()
          }
      checkCancelledWithToken cts t
  
  [<Test>]
  let ``canceled task 2``() =        
      let t = 
          task' {
              let! v = Task.Factory.StartNew(fun () -> 0)
              return ()
          }
      checkCancelled t
  
  [<Test>]
  let ``return should return value``() =        
      let t = 
          task' {            
              return 100
          }
      checkSuccess 100 t  
  
  [<Test>]
  let ``return! should accept task parametrized by CancellationToken``() =    
      let t1 = 
          task' {
              let! v = Task.Factory.StartNew(fun () -> 100)
              return v
          }
  
      let t2 = 
          task' {            
              return! t1
          }
      checkSuccess 100 t2    
  
  [<Test>]
  let ``bind should chain two tasks``() =    
      let t = 
          task' {
              let! v1 = Task.Factory.StartNew(fun () -> 100)
              let! v2 = Task.Factory.StartNew(fun () -> v1 + 1)
              return v2
  