anchor.diff:  
       /// Generates a non-empty list of random length. The maximum length 
       /// depends on the size parameter.
  +    ///[category: Creating generators from generators]
  +    [<CompiledName("NonEmptyListOf")>]
       let nonEmptyListOf gn =
           sized <| fun n ->
               gen {   let! k = choose (1,max 1 n)
                       return! listOfLength k gn }
   
       /// Generates sublists of the given sequence.
  +    ///[category: Creating generators]
  +    [<CompiledName("SubListOf")>]
       let subListOf l =
           let elems = Array.ofSeq l
           gen {// Generate indices into the array (up to the number of elements)
  
positive.code:         Gen(fun n r -> go (Seq.toList l) [] n r)
  
      ///Generates a list of given length, containing values generated by the given generator.
      let listOfLength n arb = sequence [ for i in 1..n -> arb ]
  
      ///Tries to generate a value that satisfies a predicate. This function 'gives up' by generating None
      ///if the given original generator did not generate any values that satisfied the predicate, after trying to
      ///get values from by increasing its size.
      let suchThatOption p gn =
          let rec tryValue k n =
              match (k,n) with 
  
negative.code:     let internal rand = Gen (fun n r -> r)
  
      ///Generates a value with maximum size n.
      ///[category: Generating test values]
      [<CompiledName("Eval")>]
      let eval n rnd (Gen m) = 
          let size,rnd' = range (0,n) rnd
          m size rnd'
  
      ///Generates n values of the given size.
      ///[category: Generating test values]
      [<CompiledName("Sample")>]
      let sample size n gn  = 
          let rec sample i seed samples =
              if i = 0 then samples
  