anchor.diff:      // Two difference values could have equal hash, but I expect from the hash function that to be extremly unlikly
       equalHash = equalValue
   
  -[<Property>]
  +[<Property(Arbitrary=[|typeof<Generators>|])>]
   let equals (validStrA : Decomposable) (validStrB : Decomposable) =
       let a = ComposedSet.decompose validStrA
       let b = ComposedSet.decompose validStrB            
       (validStrA = validStrB) = (a = b)
   
   
  -[<Property>]
  +[<Property(Arbitrary=[|typeof<Generators>|])>]
   let trim (validStrA : Decomposable) (validStrB : Decomposable) =
       let a = ComposedSet.decompose validStrA
       let b = ComposedSet.decompose validStrB        
  
positive.code:     (ComposedSet.compose (a ++ b ++ c)) = (validStrA + validStrB + validStrC)
  
  
  let config = { Config.Quick with MaxTest = 10000}
  Check.One(config, hashcode)
  Check.One(config, equals)
  Check.One(config, trim)
  
negative.code:         }
      Gen.sized randomSequenceOfChars'
  
  type Generators = static member Decomposable = { new Arbitrary<Decomposable>() with override x.Generator = randomSequenceOfChars }
  
  [<Property(Arbitrary=[|typeof<Generators>|])>]
  let hashcode (validStrA:Decomposable) (validStrB:Decomposable) = 
      let a = ComposedSet.decompose validStrA
      let b = ComposedSet.decompose validStrB
  