anchor.diff:          |> addParameter parameterName info.UnderlyingTypeSyntax
           |> addBodyStatement body
   
  +    let iequatableOf t =
  +        let iEquatable = typedefof<IEquatable<_>>
  +        let ns = TypeSyntax.MakeQualified(iEquatable.Namespace.Split('.'))
  +
  +        TypeSyntax.MakeGeneric iEquatable.Name [|t|]
  +
   module private Casts =
       let addCast fromType toType cast expressionMaker generatedClass =
           let parameterName = "x"
  
positive.code:         decl |> addMember (builder info)
  
      SyntaxFactory.ClassDeclaration(idType.Name)
          |> addBaseTypes [| iequatableTypeSyntax info.GeneratedTypeSyntax |]
          |?> (info.Id.EqualsUnderlying, addBaseTypes [| iequatableTypeSyntax info.UnderlyingTypeSyntax |])
          |> addModifiers [|visibility; SyntaxKind.PartialKeyword|]
          |> addMember' makeValueProperty
          |> addMember' makeCtor
  
negative.code:         | Explicit -> addCast' SyntaxKind.ExplicitKeyword
  
      let addCastToUnderlyingType info generatedClass = 
          generatedClass
          |> addCast info.GeneratedTypeSyntax info.UnderlyingTypeSyntax info.Id.CastToUnderlying
              (fun n -> simpleMemberAccess n info.Id.ValueProperty)
  
      let addCastFromUnderlyingType info generatedClass = 
          generatedClass
          |> addCast info.UnderlyingTypeSyntax info.GeneratedTypeSyntax info.Id.CastFromUnderlying
              (fun n -> objectCreation info.GeneratedTypeSyntax [|SyntaxFactory.IdentifierName(n)|])
  
  let private makeClass idType info = 
      let visibility = visibilityToKeyword idType.Visibility
  