 public struct CGRect {
     public var origin: CGPoint
     public var size: CGSize
-    @transparent public init() {
+    @_transparent public init() {
         self.origin = CGPoint()
         self.size = CGSize()
     }
-    @transparent public init(origin: CGPoint, size: CGSize) {
+    @_transparent public init(origin: CGPoint, size: CGSize) {
         self.origin = origin
         self.size = size
     }

public struct CGPoint {
    public var x: CGFloat
    public var y: CGFloat
    @transparent public init() {
        self.x = CGFloat()
        self.y = CGFloat()
    }
    @transparent public init(x: CGFloat, y: CGFloat) {
        self.x = x
        self.y = y
    }

    /// 32-bit architectures and Double on 64-bit architectures.
    /// We assume 64 bit for now
    public typealias NativeType = Double
    @_transparent public init() {
        self.native = 0.0
    }
    @_transparent public init(_ value: Float) {
        self.native = NativeType(value)
    }
    @_transparent public init(_ value: Double) {
        self.native = NativeType(value)
    }
    /// The native value.
