anchor.diff:              temp.[i] <- v
               i <- i + 1
   
  -    getSubArray temp 0 i
  +    sliceImpl temp 0 i
   
   let distinct (array: 'T[]) (cons: ArrayCons) = distinctBy id array cons
   
  -let where predicate (array: _[]) = filter predicate array
  +let where predicate (array: _[]) = filterImpl predicate array
   
   let except (itemsToExclude: seq<_>) (array:_[]) =
       if array.Length = 0 then
           array
       else
           let cached = System.Collections.Generic.HashSet(itemsToExclude)
  -        array |> filter cached.Add
  +        array |> filterImpl cached.Add
   
   let groupBy (projection: 'T->'Key) (array: 'T[]) (cons: ArrayCons) =
       let dict = System.Collections.Generic.Dictionary<'Key, 'T[]>()
  
positive.code: 
  let tail (array : 'T[]) =
      if array.Length = 0 then invalidArg "array" "Not enough elements"
      slice array 1
  
  let item index (array: _[]) =
      array.[index]
  
negative.code:         let key = projection v
          let mutable prev = Unchecked.defaultof<_>
          if dict.TryGetValue(key, &prev) then
              pushImpl prev v |> ignore
          else
              let prev = cons.From [|v|]
              dict.[key] <- prev
  