anchor.diff:              info.Id.CastFromUnderlying
               maker
   
  +    let isNullable (t:Type) =
  +        t.IsGenericType
  +            && t.GetGenericTypeDefinition() = typeof<Nullable<int>>.GetGenericTypeDefinition()
  +
       /// Add all casts to the type
       let addAll info generatedType =
  +        let underlyingIsNullable = isNullable info.Id.UnderlyingType
  +
           generatedType
               |> addToUnderlyingType info
               |> addFromUnderlyingType info
  -            |> addToUnderlyingTypeNullable info
  -            |> addFromUnderlyingTypeNullable info
  +            |?> (not underlyingIsNullable, addToUnderlyingTypeNullable info)
  +            |?> (not underlyingIsNullable, addFromUnderlyingTypeNullable info)
   
   /// Implement IConvertible by calling System.Convert methods on the underlying type
   module private Convertible =
  
positive.code:         CanBeNull = idType.UnderlyingType.IsClass || idType.UnderlyingType.IsInterface
          AllowNull = idType.AllowNull
          NamespaceProvided = namespaceProvided
          UnderlyingTypeSyntax = SyntaxFactory.ParseTypeName(idType.UnderlyingType.FullName)
          GeneratedTypeSyntax  = SyntaxFactory.ParseTypeName(idType.Name)
          ThisValueMemberAccess = thisMemberAccess fieldName
          ValueAccess = (fun expr -> expr |> dottedMemberAccess [fieldName])
  
negative.code: let private value info x = x :> ExpressionSyntax |> info.ValueAccess
  
  let private (|?>) x (c, f) = if c then f x else x
  
  let private visibilityToKeyword = function
      | Public -> SyntaxKind.PublicKeyword
  