anchor.diff:          | _ -> 
               None
   
  +    // Adds all the words of an example to the class counts dictionary.
  +    // This is used both in the Seq and DSet versions.
  +    // We want to accumulate a separate Counts[] per partition, so we start start a DSet.fold with null,
  +    // which is passed to each partition, and initialize the running object on the first call.
  +    // This prevents Prajna from having to deserialize the zero object multiple times, once per partition,
  +    // at the cost of a null check per element. 
       let addWords (numLabels: int) (countsOrNull: Counts[]) (words: HashSet<string>, label: int) = 
           let counts = 
               if countsOrNull = null 
  
positive.code:         words |> Seq.iter (fun w -> counts.[label] |> add w 1)
          counts
  
      let addCounts (counts1: Counts[]) (counts2: Counts[]) =
          let ret = 
              Array.map2 (fun (lc1: Counts) (lc2: Counts) ->
  
negative.code: 
          // Call this to test prediction accuracy on large dataset, but not during unit test
          let evaluate() =
              printfn "Testing..."
  
              // A class' "prior" is simply the probability of the class in the dataset overall,
              // before we look at any words
              let priors: float[] = 
                  let labelCounts = 
                      trainSet
  