anchor.diff:          member x.MergeWith(sources) = 
             // For every source, we get a list of sources that were used to produce it
             let sources = 
  -            (x::sources) |> List.tryChooseBy (function
  +            Seq.append [x] sources |> List.ofSeq |> List.tryChooseBy (function
               | :? ICombinedVectorSource<'T> as src -> Some(src.Sources |> Array.ofSeq)
               | _ -> None)
             match sources with 
  
positive.code:     { new IVirtualVectorSource<'TNew> with
          member x.ValueAt(idx) = f (Address.ofInt64 idx) (source.ValueAt(idx)) // TODO: Are we calculating the address correctly here??
          member x.MergeWith(sources) = 
            let sources = sources |> List.tryChooseBy (function
                | :? IMappedVectorSource<'V, 'TNew> as src -> Some(src.Source) | _ -> None)
            match sources with 
            | None -> failwith "Cannot merge frames or series not created by combine"
  
negative.code:                   member x.MergeWith(sources) = 
                      // For every source, we get a list of sources that were used to produce it
                      let sources = 
                        Seq.append [x] sources |> List.ofSeq |> List.tryChooseBy (function
                        | :? VirtualVectorSource.ICombinedVectorSource<'T> as src -> Some(src.Sources |> Array.ofSeq)
                        | _ -> None)
                      match sources with 
  