anchor.diff:  
   module BitMap =
   
  -    type bitmap = System.Collections.BitArray
  -    
  -    let fromArray (bools:bool []) = new System.Collections.BitArray(bools)
  +    type bitmap = System.Collections.BitArray * int // map * skipped count
  +    
  +    let ofArray (bools:bool []) = 
  +        let skippedCount = bools |> Seq.filter (not) |> Seq.length
  +        ((new System.Collections.BitArray(bools)), skippedCount):bitmap
  +    
       let init n (f:int->bool) = 
           let bools = Array.init n f
  -        fromArray bools
  +        ofArray bools    
   
       let isSet index (b:bitmap) =
  -        b.Get(int index)
  +        (fst b).Get(int index)
   
       let countUpto (uptoIndex:int64) (b:bitmap) = 
           let mutable count = 0L
           for i=0 to (int uptoIndex)-1 do
  -            if b.Get(i) then
  +            if isSet i b then
                   count <- count+1L
           count
   
  
positive.code:         printfn "max %d ms" (Array.max arr)
          printfn "sum %d ms" (Array.sum arr)
          result
      let testSimpleRandom = testRandomQuery AsciiProvider.convertToSimple Reader.simpleQuery
      let testSparseRandom = testRandomQuery AsciiProvider.convertToSparse Reader.sparseQuery 
      let testSmallMarspec() =
  
negative.code:         testSmallMarspec()
          testAllMarspec10m()
  
  //Test.runall()