anchor.diff:             match case with
               | null -> identity
               | case -> case)
  -      {new CloneSmart<'t> () with
  +      {new CloneSmarter<'t> () with
           override this.Clone (original) =
             // First we extract the case index.
             let caseIndex = union.Tag original
  
positive.code:       null
      else
        let identity =
          {new CloneSmart<'t> () with 
            override this.Clone (original) = original}
        let cloneUnion =
          Array.ofList cloneUnion
  
negative.code:   member this.Product (_: Rep,
                         product: Product<'t>,
                         asProduct: AsProduct<'es, 't>,
                         cloneProduct': CloneProduct<'es, 'es, 't>) : CloneSmarter<'t> =
      // Do we need to copy something?
      match (product.IsMutable, cloneProduct') with
       | (false, null) ->
         null
       | (isMutable, cloneProduct) ->
         CloneProductToCloneSmart isMutable asProduct cloneProduct
  
    /// A rule for cloning a part of a product consisting of an `Elem: 'e` and
    /// `Rest: 'es`.
  