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