     /// Applies rotation by radians to the transformation in matrix.
     /// The effect of the new transformation is to first rotate the coordinates by radians,
     /// then apply the original transformation to the coordinates.
+    @inline(__always)
     mutating func rotate(_ radians: Double) {
         
         cairo_matrix_rotate(&self, radians)
     }
     
     /// Changes `matrix` to be the inverse of its original value.
-    /// Not all transformation matrices have inverses; if the matrix collapses points together (it is degenerate), 
+    /// Not all transformation matrices have inverses; if the matrix collapses points together (it is degenerate),
     /// then it has no inverse and this function will fail.
+    @inline(__always)
     mutating func inverse() {
         
         cairo_matrix_invert(&self)
     }
     
+    @inline(__always)
     mutating func invert() {
         
         cairo_matrix_invert(&self)

    // MARK: - Initialization
    
    static var identity: Matrix {
    
        var matrix = Matrix()
        
        cairo_matrix_init_identity(&matrix)
        
        return matrix
    }
    
    init(scale: (x: Double, y: Double)) {
        
        self.init()

        cairo_matrix_multiply(&self, &copy.a, &copy.b)
    }
    
    @inline(__always)
    mutating func scale(x: Double, y: Double) {
        
        cairo_matrix_scale(&self, x, y)
    }
    
    /// Applies a translation by `x , y` to the transformation in matrix .
    /// The effect of the new transformation is to first translate the coordinates by `x` and `y`,
    /// then apply the original transformation to the coordinates.
    @inline(__always)
    mutating func translate(x: Double, y: Double) {
        
        cairo_matrix_translate(&self, x, y)
    }
}
