{-# LANGUAGE TypeApplications #-}
#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif
module GI.Ggit.Structs.DiffSimilarityMetric
(
DiffSimilarityMetric(..) ,
#if defined(ENABLE_OVERLOADING)
ResolveDiffSimilarityMetricMethod ,
#endif
#if defined(ENABLE_OVERLOADING)
DiffSimilarityMetricCopyMethodInfo ,
#endif
diffSimilarityMetricCopy ,
#if defined(ENABLE_OVERLOADING)
DiffSimilarityMetricFreeMethodInfo ,
#endif
diffSimilarityMetricFree ,
diffSimilarityMetricNew ,
) where
import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P
import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R
import qualified GI.Ggit.Callbacks as Ggit.Callbacks
newtype DiffSimilarityMetric = DiffSimilarityMetric (SP.ManagedPtr DiffSimilarityMetric)
deriving (DiffSimilarityMetric -> DiffSimilarityMetric -> Bool
(DiffSimilarityMetric -> DiffSimilarityMetric -> Bool)
-> (DiffSimilarityMetric -> DiffSimilarityMetric -> Bool)
-> Eq DiffSimilarityMetric
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DiffSimilarityMetric -> DiffSimilarityMetric -> Bool
$c/= :: DiffSimilarityMetric -> DiffSimilarityMetric -> Bool
== :: DiffSimilarityMetric -> DiffSimilarityMetric -> Bool
$c== :: DiffSimilarityMetric -> DiffSimilarityMetric -> Bool
Eq)
instance SP.ManagedPtrNewtype DiffSimilarityMetric where
toManagedPtr :: DiffSimilarityMetric -> ManagedPtr DiffSimilarityMetric
toManagedPtr (DiffSimilarityMetric ManagedPtr DiffSimilarityMetric
p) = ManagedPtr DiffSimilarityMetric
p
foreign import ccall "ggit_diff_similarity_metric_get_type" c_ggit_diff_similarity_metric_get_type ::
IO GType
type instance O.ParentTypes DiffSimilarityMetric = '[]
instance O.HasParentTypes DiffSimilarityMetric
instance B.Types.TypedObject DiffSimilarityMetric where
glibType :: IO GType
glibType = IO GType
c_ggit_diff_similarity_metric_get_type
instance B.Types.GBoxed DiffSimilarityMetric
instance B.GValue.IsGValue (Maybe DiffSimilarityMetric) where
gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_ggit_diff_similarity_metric_get_type
gvalueSet_ :: Ptr GValue -> Maybe DiffSimilarityMetric -> IO ()
gvalueSet_ Ptr GValue
gv Maybe DiffSimilarityMetric
P.Nothing = Ptr GValue -> Ptr DiffSimilarityMetric -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv (Ptr DiffSimilarityMetric
forall a. Ptr a
FP.nullPtr :: FP.Ptr DiffSimilarityMetric)
gvalueSet_ Ptr GValue
gv (P.Just DiffSimilarityMetric
obj) = DiffSimilarityMetric
-> (Ptr DiffSimilarityMetric -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr DiffSimilarityMetric
obj (Ptr GValue -> Ptr DiffSimilarityMetric -> IO ()
forall a. Ptr GValue -> Ptr a -> IO ()
B.GValue.set_boxed Ptr GValue
gv)
gvalueGet_ :: Ptr GValue -> IO (Maybe DiffSimilarityMetric)
gvalueGet_ Ptr GValue
gv = do
Ptr DiffSimilarityMetric
ptr <- Ptr GValue -> IO (Ptr DiffSimilarityMetric)
forall b. Ptr GValue -> IO (Ptr b)
B.GValue.get_boxed Ptr GValue
gv :: IO (Ptr DiffSimilarityMetric)
if Ptr DiffSimilarityMetric
ptr Ptr DiffSimilarityMetric -> Ptr DiffSimilarityMetric -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr DiffSimilarityMetric
forall a. Ptr a
FP.nullPtr
then DiffSimilarityMetric -> Maybe DiffSimilarityMetric
forall a. a -> Maybe a
P.Just (DiffSimilarityMetric -> Maybe DiffSimilarityMetric)
-> IO DiffSimilarityMetric -> IO (Maybe DiffSimilarityMetric)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr DiffSimilarityMetric -> DiffSimilarityMetric)
-> Ptr DiffSimilarityMetric -> IO DiffSimilarityMetric
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.newBoxed ManagedPtr DiffSimilarityMetric -> DiffSimilarityMetric
DiffSimilarityMetric Ptr DiffSimilarityMetric
ptr
else Maybe DiffSimilarityMetric -> IO (Maybe DiffSimilarityMetric)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe DiffSimilarityMetric
forall a. Maybe a
P.Nothing
#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList DiffSimilarityMetric
type instance O.AttributeList DiffSimilarityMetric = DiffSimilarityMetricAttributeList
type DiffSimilarityMetricAttributeList = ('[ ] :: [(Symbol, *)])
#endif
foreign import ccall "ggit_diff_similarity_metric_new" ggit_diff_similarity_metric_new ::
FunPtr Ggit.Callbacks.C_DiffSimilarityMetricFileSignatureCallback ->
FunPtr Ggit.Callbacks.C_DiffSimilarityMetricBufferSignatureCallback ->
FunPtr Ggit.Callbacks.C_DiffSimilarityMetricFreeSignatureCallback ->
FunPtr Ggit.Callbacks.C_DiffSimilarityMetricSimilarityCallback ->
Ptr () ->
IO (Ptr DiffSimilarityMetric)
diffSimilarityMetricNew ::
(B.CallStack.HasCallStack, MonadIO m) =>
Ggit.Callbacks.DiffSimilarityMetricFileSignatureCallback
-> Ggit.Callbacks.DiffSimilarityMetricBufferSignatureCallback
-> Ggit.Callbacks.DiffSimilarityMetricFreeSignatureCallback
-> Ggit.Callbacks.DiffSimilarityMetricSimilarityCallback
-> m DiffSimilarityMetric
diffSimilarityMetricNew :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
DiffSimilarityMetricFileSignatureCallback
-> DiffSimilarityMetricBufferSignatureCallback
-> DiffSimilarityMetricFreeSignatureCallback
-> DiffSimilarityMetricSimilarityCallback
-> m DiffSimilarityMetric
diffSimilarityMetricNew DiffSimilarityMetricFileSignatureCallback
fileSignature DiffSimilarityMetricBufferSignatureCallback
bufferSignature DiffSimilarityMetricFreeSignatureCallback
freeSignature DiffSimilarityMetricSimilarityCallback
similarity = IO DiffSimilarityMetric -> m DiffSimilarityMetric
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO DiffSimilarityMetric -> m DiffSimilarityMetric)
-> IO DiffSimilarityMetric -> m DiffSimilarityMetric
forall a b. (a -> b) -> a -> b
$ do
FunPtr C_DiffSimilarityMetricFileSignatureCallback
fileSignature' <- C_DiffSimilarityMetricFileSignatureCallback
-> IO (FunPtr C_DiffSimilarityMetricFileSignatureCallback)
Ggit.Callbacks.mk_DiffSimilarityMetricFileSignatureCallback (Maybe (Ptr (FunPtr C_DiffSimilarityMetricFileSignatureCallback))
-> DiffSimilarityMetricFileSignatureCallback_WithClosures
-> C_DiffSimilarityMetricFileSignatureCallback
Ggit.Callbacks.wrap_DiffSimilarityMetricFileSignatureCallback Maybe (Ptr (FunPtr C_DiffSimilarityMetricFileSignatureCallback))
forall a. Maybe a
Nothing (DiffSimilarityMetricFileSignatureCallback
-> DiffSimilarityMetricFileSignatureCallback_WithClosures
Ggit.Callbacks.drop_closures_DiffSimilarityMetricFileSignatureCallback DiffSimilarityMetricFileSignatureCallback
fileSignature))
FunPtr C_DiffSimilarityMetricBufferSignatureCallback
bufferSignature' <- C_DiffSimilarityMetricBufferSignatureCallback
-> IO (FunPtr C_DiffSimilarityMetricBufferSignatureCallback)
Ggit.Callbacks.mk_DiffSimilarityMetricBufferSignatureCallback (Maybe (Ptr (FunPtr C_DiffSimilarityMetricBufferSignatureCallback))
-> DiffSimilarityMetricBufferSignatureCallback_WithClosures
-> C_DiffSimilarityMetricBufferSignatureCallback
Ggit.Callbacks.wrap_DiffSimilarityMetricBufferSignatureCallback Maybe (Ptr (FunPtr C_DiffSimilarityMetricBufferSignatureCallback))
forall a. Maybe a
Nothing (DiffSimilarityMetricBufferSignatureCallback
-> DiffSimilarityMetricBufferSignatureCallback_WithClosures
Ggit.Callbacks.drop_closures_DiffSimilarityMetricBufferSignatureCallback DiffSimilarityMetricBufferSignatureCallback
bufferSignature))
FunPtr C_DiffSimilarityMetricFreeSignatureCallback
freeSignature' <- C_DiffSimilarityMetricFreeSignatureCallback
-> IO (FunPtr C_DiffSimilarityMetricFreeSignatureCallback)
Ggit.Callbacks.mk_DiffSimilarityMetricFreeSignatureCallback (Maybe (Ptr (FunPtr C_DiffSimilarityMetricFreeSignatureCallback))
-> C_DiffSimilarityMetricFreeSignatureCallback
-> C_DiffSimilarityMetricFreeSignatureCallback
Ggit.Callbacks.wrap_DiffSimilarityMetricFreeSignatureCallback Maybe (Ptr (FunPtr C_DiffSimilarityMetricFreeSignatureCallback))
forall a. Maybe a
Nothing (DiffSimilarityMetricFreeSignatureCallback
-> C_DiffSimilarityMetricFreeSignatureCallback
Ggit.Callbacks.drop_closures_DiffSimilarityMetricFreeSignatureCallback DiffSimilarityMetricFreeSignatureCallback
freeSignature))
FunPtr C_DiffSimilarityMetricSimilarityCallback
similarity' <- C_DiffSimilarityMetricSimilarityCallback
-> IO (FunPtr C_DiffSimilarityMetricSimilarityCallback)
Ggit.Callbacks.mk_DiffSimilarityMetricSimilarityCallback (Maybe (Ptr (FunPtr C_DiffSimilarityMetricSimilarityCallback))
-> C_DiffSimilarityMetricSimilarityCallback
-> C_DiffSimilarityMetricSimilarityCallback
Ggit.Callbacks.wrap_DiffSimilarityMetricSimilarityCallback Maybe (Ptr (FunPtr C_DiffSimilarityMetricSimilarityCallback))
forall a. Maybe a
Nothing (DiffSimilarityMetricSimilarityCallback
-> C_DiffSimilarityMetricSimilarityCallback
Ggit.Callbacks.drop_closures_DiffSimilarityMetricSimilarityCallback DiffSimilarityMetricSimilarityCallback
similarity))
let userData :: Ptr a
userData = Ptr a
forall a. Ptr a
nullPtr
Ptr DiffSimilarityMetric
result <- FunPtr C_DiffSimilarityMetricFileSignatureCallback
-> FunPtr C_DiffSimilarityMetricBufferSignatureCallback
-> FunPtr C_DiffSimilarityMetricFreeSignatureCallback
-> FunPtr C_DiffSimilarityMetricSimilarityCallback
-> Ptr ()
-> IO (Ptr DiffSimilarityMetric)
ggit_diff_similarity_metric_new FunPtr C_DiffSimilarityMetricFileSignatureCallback
fileSignature' FunPtr C_DiffSimilarityMetricBufferSignatureCallback
bufferSignature' FunPtr C_DiffSimilarityMetricFreeSignatureCallback
freeSignature' FunPtr C_DiffSimilarityMetricSimilarityCallback
similarity' Ptr ()
forall a. Ptr a
userData
Text -> Ptr DiffSimilarityMetric -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"diffSimilarityMetricNew" Ptr DiffSimilarityMetric
result
DiffSimilarityMetric
result' <- ((ManagedPtr DiffSimilarityMetric -> DiffSimilarityMetric)
-> Ptr DiffSimilarityMetric -> IO DiffSimilarityMetric
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr DiffSimilarityMetric -> DiffSimilarityMetric
DiffSimilarityMetric) Ptr DiffSimilarityMetric
result
Ptr Any -> IO ()
forall a. Ptr a -> IO ()
safeFreeFunPtr (Ptr Any -> IO ()) -> Ptr Any -> IO ()
forall a b. (a -> b) -> a -> b
$ FunPtr C_DiffSimilarityMetricFileSignatureCallback -> Ptr Any
forall a b. FunPtr a -> Ptr b
castFunPtrToPtr FunPtr C_DiffSimilarityMetricFileSignatureCallback
fileSignature'
Ptr Any -> IO ()
forall a. Ptr a -> IO ()
safeFreeFunPtr (Ptr Any -> IO ()) -> Ptr Any -> IO ()
forall a b. (a -> b) -> a -> b
$ FunPtr C_DiffSimilarityMetricBufferSignatureCallback -> Ptr Any
forall a b. FunPtr a -> Ptr b
castFunPtrToPtr FunPtr C_DiffSimilarityMetricBufferSignatureCallback
bufferSignature'
Ptr Any -> IO ()
forall a. Ptr a -> IO ()
safeFreeFunPtr (Ptr Any -> IO ()) -> Ptr Any -> IO ()
forall a b. (a -> b) -> a -> b
$ FunPtr C_DiffSimilarityMetricFreeSignatureCallback -> Ptr Any
forall a b. FunPtr a -> Ptr b
castFunPtrToPtr FunPtr C_DiffSimilarityMetricFreeSignatureCallback
freeSignature'
Ptr Any -> IO ()
forall a. Ptr a -> IO ()
safeFreeFunPtr (Ptr Any -> IO ()) -> Ptr Any -> IO ()
forall a b. (a -> b) -> a -> b
$ FunPtr C_DiffSimilarityMetricSimilarityCallback -> Ptr Any
forall a b. FunPtr a -> Ptr b
castFunPtrToPtr FunPtr C_DiffSimilarityMetricSimilarityCallback
similarity'
DiffSimilarityMetric -> IO DiffSimilarityMetric
forall (m :: * -> *) a. Monad m => a -> m a
return DiffSimilarityMetric
result'
#if defined(ENABLE_OVERLOADING)
#endif
foreign import ccall "ggit_diff_similarity_metric_copy" ggit_diff_similarity_metric_copy ::
Ptr DiffSimilarityMetric ->
IO (Ptr DiffSimilarityMetric)
diffSimilarityMetricCopy ::
(B.CallStack.HasCallStack, MonadIO m) =>
DiffSimilarityMetric
-> m (Maybe DiffSimilarityMetric)
diffSimilarityMetricCopy :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
DiffSimilarityMetric -> m (Maybe DiffSimilarityMetric)
diffSimilarityMetricCopy DiffSimilarityMetric
metric = IO (Maybe DiffSimilarityMetric) -> m (Maybe DiffSimilarityMetric)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe DiffSimilarityMetric) -> m (Maybe DiffSimilarityMetric))
-> IO (Maybe DiffSimilarityMetric)
-> m (Maybe DiffSimilarityMetric)
forall a b. (a -> b) -> a -> b
$ do
Ptr DiffSimilarityMetric
metric' <- DiffSimilarityMetric -> IO (Ptr DiffSimilarityMetric)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr DiffSimilarityMetric
metric
Ptr DiffSimilarityMetric
result <- Ptr DiffSimilarityMetric -> IO (Ptr DiffSimilarityMetric)
ggit_diff_similarity_metric_copy Ptr DiffSimilarityMetric
metric'
Maybe DiffSimilarityMetric
maybeResult <- Ptr DiffSimilarityMetric
-> (Ptr DiffSimilarityMetric -> IO DiffSimilarityMetric)
-> IO (Maybe DiffSimilarityMetric)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr DiffSimilarityMetric
result ((Ptr DiffSimilarityMetric -> IO DiffSimilarityMetric)
-> IO (Maybe DiffSimilarityMetric))
-> (Ptr DiffSimilarityMetric -> IO DiffSimilarityMetric)
-> IO (Maybe DiffSimilarityMetric)
forall a b. (a -> b) -> a -> b
$ \Ptr DiffSimilarityMetric
result' -> do
DiffSimilarityMetric
result'' <- ((ManagedPtr DiffSimilarityMetric -> DiffSimilarityMetric)
-> Ptr DiffSimilarityMetric -> IO DiffSimilarityMetric
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr DiffSimilarityMetric -> DiffSimilarityMetric
DiffSimilarityMetric) Ptr DiffSimilarityMetric
result'
DiffSimilarityMetric -> IO DiffSimilarityMetric
forall (m :: * -> *) a. Monad m => a -> m a
return DiffSimilarityMetric
result''
DiffSimilarityMetric -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr DiffSimilarityMetric
metric
Maybe DiffSimilarityMetric -> IO (Maybe DiffSimilarityMetric)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe DiffSimilarityMetric
maybeResult
#if defined(ENABLE_OVERLOADING)
data DiffSimilarityMetricCopyMethodInfo
instance (signature ~ (m (Maybe DiffSimilarityMetric)), MonadIO m) => O.OverloadedMethod DiffSimilarityMetricCopyMethodInfo DiffSimilarityMetric signature where
overloadedMethod = diffSimilarityMetricCopy
instance O.OverloadedMethodInfo DiffSimilarityMetricCopyMethodInfo DiffSimilarityMetric where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Ggit.Structs.DiffSimilarityMetric.diffSimilarityMetricCopy",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-ggit-1.0.11/docs/GI-Ggit-Structs-DiffSimilarityMetric.html#v:diffSimilarityMetricCopy"
})
#endif
foreign import ccall "ggit_diff_similarity_metric_free" ggit_diff_similarity_metric_free ::
Ptr DiffSimilarityMetric ->
IO ()
diffSimilarityMetricFree ::
(B.CallStack.HasCallStack, MonadIO m) =>
DiffSimilarityMetric
-> m ()
diffSimilarityMetricFree :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
DiffSimilarityMetric -> m ()
diffSimilarityMetricFree DiffSimilarityMetric
metric = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
Ptr DiffSimilarityMetric
metric' <- DiffSimilarityMetric -> IO (Ptr DiffSimilarityMetric)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr DiffSimilarityMetric
metric
Ptr DiffSimilarityMetric -> IO ()
ggit_diff_similarity_metric_free Ptr DiffSimilarityMetric
metric'
DiffSimilarityMetric -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr DiffSimilarityMetric
metric
() -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()
#if defined(ENABLE_OVERLOADING)
data DiffSimilarityMetricFreeMethodInfo
instance (signature ~ (m ()), MonadIO m) => O.OverloadedMethod DiffSimilarityMetricFreeMethodInfo DiffSimilarityMetric signature where
overloadedMethod = diffSimilarityMetricFree
instance O.OverloadedMethodInfo DiffSimilarityMetricFreeMethodInfo DiffSimilarityMetric where
overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
O.resolvedSymbolName = "GI.Ggit.Structs.DiffSimilarityMetric.diffSimilarityMetricFree",
O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-ggit-1.0.11/docs/GI-Ggit-Structs-DiffSimilarityMetric.html#v:diffSimilarityMetricFree"
})
#endif
#if defined(ENABLE_OVERLOADING)
type family ResolveDiffSimilarityMetricMethod (t :: Symbol) (o :: *) :: * where
ResolveDiffSimilarityMetricMethod "copy" o = DiffSimilarityMetricCopyMethodInfo
ResolveDiffSimilarityMetricMethod "free" o = DiffSimilarityMetricFreeMethodInfo
ResolveDiffSimilarityMetricMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveDiffSimilarityMetricMethod t DiffSimilarityMetric, O.OverloadedMethod info DiffSimilarityMetric p) => OL.IsLabel t (DiffSimilarityMetric -> p) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.overloadedMethod @info
#else
fromLabel _ = O.overloadedMethod @info
#endif
#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveDiffSimilarityMetricMethod t DiffSimilarityMetric, O.OverloadedMethod info DiffSimilarityMetric p, R.HasField t DiffSimilarityMetric p) => R.HasField t DiffSimilarityMetric p where
getField = O.overloadedMethod @info
#endif
instance (info ~ ResolveDiffSimilarityMetricMethod t DiffSimilarityMetric, O.OverloadedMethodInfo info DiffSimilarityMetric) => OL.IsLabel t (O.MethodProxy info DiffSimilarityMetric) where
#if MIN_VERSION_base(4,10,0)
fromLabel = O.MethodProxy
#else
fromLabel _ = O.MethodProxy
#endif
#endif