anchor.diff:      let conc = ComposedSet.concat end_trimmed start_trimmed
       (ComposedSet.compose a) = (ComposedSet.compose conc)
   
  -[<Property(Arbitrary=[|typeof<ComposableGenerators>|])>]
  +[<Property(Arbitrary=[|typeof<DecomposableGenerators>|])>]
   let concat (validStrA : Decomposable) (validStrB : Decomposable) (validStrC : Decomposable) =
       let (++) = ComposedSet.concat
       let a = ComposedSet.decompose validStrA
  
positive.code:     // 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>|])>]
  let equals (validStrA : Decomposable) (validStrB : Decomposable) =
      let a = ComposedSet.decompose validStrA
      let b = ComposedSet.decompose validStrB            
      (validStrA = validStrB) = (a = b)
  
  
  [<Property(Arbitrary=[|typeof<ComposableGenerators>|])>]
  let trim (validStrA : Decomposable) (validStrB : Decomposable) =
      let a = ComposedSet.decompose validStrA
      let b = ComposedSet.decompose validStrB        
  
negative.code:         }
      Gen.sized randomSequenceOfChars'
  
  type DecomposableGenerators = 
      static member Decomposable() = 
          {new Arbitrary<Decomposable>() with 
              override x.Generator = randomSequenceOfChars
              override x.Shrinker t = Seq.empty}
  
  [<Property(Arbitrary=[|typeof<DecomposableGenerators>|])>]
  let hashcode (validStrA:Decomposable) (validStrB:Decomposable) = 
      let a = ComposedSet.decompose validStrA
      let b = ComposedSet.decompose validStrB
  