anchor.diff:  
       /// Generates a list of random length. The maximum length depends on the
       /// size parameter.
  +    ///[category: Creating generators from generators]
  +    [<CompiledName("ListOf")>]
       let listOf gn =
           sized <| fun n ->
               gen {   let! k = choose (0,n+1) //decrease chance of empty list
  
positive.code:         sample n (Random.newSeed()) []
  
      ///Generates an integer between l and h, inclusive.
      let choose (l, h) = rand |> map (range (l,h) >> fst) 
  
      ///Build a generator that randomly generates one of the values in the given non-empty seq.
      let elements xs = 
          choose (0, (Seq.length xs)-1)  |> map(flip Seq.nth xs)
  
      ///Build a generator that generates a value from one of the generators in the given non-empty seq, with
      ///equal probability.
      let oneof gens = gen.Bind(elements gens, id)
  
      ///Build a generator that generates a value from one of the generators in the given non-empty seq, with
      ///given probabilities. The sum of the probabilities must be larger than zero.
      let frequency xs = 
          let tot = Seq.sumBy fst xs
          let rec pick n ys = 
  
negative.code:     ///Generates a value that satisfies a predicate. Contrary to suchThatOption, this function keeps re-trying
      ///by increasing the size of the original generator ad infinitum.  Make sure there is a high chance that 
      ///the predicate is satisfied.
      ///[category: Creating generators from generators]
      [<CompiledName("SuchThat")>]
      let rec suchThat p gn =
          gen {   let! mx = suchThatOption p gn
                  match mx with
  