anchor.diff:  
           // Three Y values
           let internal mergeDataAndLabelsForXY3 data labels = 
  +            let data = convertKeys1of4 (NotifySeq.notifyOrOnce data)
               let xType = getChartValueType (Seq.map (fun (a, _, _, _) -> a) data)
  -            let data = NotifySeq.notifyOrOnce data // evaluate only once and cache
               match labels with 
               | None -> 
  -                let dataAndLabels = data |> convertKeys1of4 |> NotifySeq.map (fun (x,y1,y2,y3) -> ThreeXYDataPoint(X=x,Y1=y1,Label=null,Y2=y2,Y3=y3))
  +                let dataAndLabels = data |> NotifySeq.map (fun (x,y1,y2,y3) -> ThreeXYDataPoint(X=x,Y1=y1,Label=null,Y2=y2,Y3=y3))
                   ChartData.Values(NotifySeq.ignoreReset dataAndLabels, xType, "X", "Y1,Y2,Y3", "")
               | Some labels ->  
                   let labels = NotifySeq.notifyOrOnce labels
  -                let dataAndLabels = NotifySeq.zip data labels |> convertKeys1of4of2 |> NotifySeq.map (fun ((x,y1,y2,y3),label) -> ThreeXYDataPoint(X=x,Y1=y1,Y2=y2,Y3=y3,Label=label))
  +                let dataAndLabels = NotifySeq.zip data labels |> NotifySeq.map (fun ((x,y1,y2,y3),label) -> ThreeXYDataPoint(X=x,Y1=y1,Y2=y2,Y3=y3,Label=label))
                   ChartData.Values(NotifySeq.ignoreReset dataAndLabels, xType, "X", "Y1,Y2,Y3", "Label=Label")
   
   
           // One X and Four Y values
           let internal mergeDataAndLabelsForXY4 (data:seq<#key * #value * #value * #value * #value>) labels = 
  +            let data = convertKeys1of5 (NotifySeq.notifyOrOnce data)
               let xType = getChartValueType (Seq.map (fun (a, _, _, _, _) -> a) data)
  -            let data = NotifySeq.notifyOrOnce data // evaluate only once and cache
               match labels with 
               | None -> 
  -                let dataAndLabels = data |> convertKeys1of5 |> NotifySeq.map (fun (x,y1,y2,y3,y4) -> FourXYDataPoint(X= string (box x),Y1=y1,Label=null,Y2=y2,Y3=y3,Y4=y4))
  +                let dataAndLabels = data |> NotifySeq.map (fun (x,y1,y2,y3,y4) -> FourXYDataPoint(X= string (box x),Y1=y1,Label=null,Y2=y2,Y3=y3,Y4=y4))
                   ChartData.Values(NotifySeq.ignoreReset dataAndLabels, xType, "X", "Y1,Y2,Y3,Y4", "")
               | Some labels ->  
                   let labels = NotifySeq.notifyOrOnce labels
  -                let dataAndLabels = NotifySeq.zip data labels |> convertKeys1of5of2 |> NotifySeq.map (fun ((x,y1,y2,y3,y4),label) -> FourXYDataPoint(X= string (box x),Y1=y1,Y2=y2,Y3=y3,Y4=y4,Label=label))
  +                let dataAndLabels = NotifySeq.zip data labels |> NotifySeq.map (fun ((x,y1,y2,y3,y4),label) -> FourXYDataPoint(X= string (box x),Y1=y1,Y2=y2,Y3=y3,Y4=y4,Label=label))
                   ChartData.Values(NotifySeq.ignoreReset dataAndLabels, xType, "X", "Y1,Y2,Y3,Y4", "Label=Label")
   
           // Four Y values
  
positive.code: 
          // X and Y values 
          let internal mergeDataAndLabelsForXY6 (data:seq<#key * #value * #value * #value * #value * #value * #value>) labels = 
              let xType = getChartValueType (Seq.map (fun (a, _, _, _, _, _, _) -> a) data)
              let data = NotifySeq.notifyOrOnce data // evaluate only once and cache
              match labels with 
              | None -> 
                  let dataAndLabels = data |> NotifySeq.map (fun (x,y1,y2,y3,y4,y5,y6) -> SixXYDataPoint(X=string (box x),Y1=y1,Label=null,Y2=y2,Y3=y3,Y4=y4,Y5=y5,Y6=y6))
  
negative.code: 
          // Two Y values
          let internal mergeDataAndLabelsForXY2 data labels = 
              let data = convertKeys1of3 (NotifySeq.notifyOrOnce data)
              let xType = getChartValueType (Seq.map (fun (a, _, _) -> a) data)
              match labels with 
              | None -> 
                  let dataAndLabels = data |> NotifySeq.map (fun (x,y1,y2) -> TwoXYDataPoint(X=x,Y1=y1,Label=null,Y2=y2))
                  ChartData.Values(NotifySeq.ignoreReset dataAndLabels, xType, "X", "Y1,Y2", "")
              | Some labels ->  
                  let labels = NotifySeq.notifyOrOnce labels
                  let dataAndLabels = NotifySeq.zip data labels |> NotifySeq.map (fun ((x,y1,y2),label) -> TwoXYDataPoint(X=x,Y1=y1,Y2=y2,Label=label))
                  ChartData.Values(NotifySeq.ignoreReset dataAndLabels, xType, "X", "Y1,Y2", "Label=Label")
  
          let internal mergeDataAndLabelsForY2 data (labels: #seq<string> option) = 
  