public static void Show(
        Color color,
        OnColorSelectedCallback onColorSelectedCallback,
        OnFinishCallback onFinishCallback,
        OnEarlierIOSVersionsCallback onEarlierIOSVersionsCallback)
    {
        if (gcHandleForRGBColorSelectedCallback != IntPtr.Zero ||
            gcHandleForColorSelectedCallback != IntPtr.Zero ||
            gcHandleForOnFinishCallback != IntPtr.Zero)
        {
            return;
        }

        // コールバック関数をGCされないようにAllocしてハンドルを取得する。
        gcHandleForColorSelectedCallback        = (IntPtr)GCHandle.Alloc(onColorSelectedCallback, GCHandleType.Normal);
        gcHandleForOnFinishCallback             = (IntPtr)GCHandle.Alloc(onFinishCallback, GCHandleType.Normal);
        gcHandleForOnEarlierIOSVersionsCallback = (IntPtr)GCHandle.Alloc(onEarlierIOSVersionsCallback, GCHandleType.Normal);

        // 普通の引数 + コールバック関数のハンドル + コールバック関数を呼び出すためのstaticなメソッド
        _CallColorPickerPlugin(
            color.r,
            color.g,
            color.b,
            color.a,
            CallColorSelectedCallback,
            CallOnFinishCallback,
            CallOnEarlierIOSVersionsCallback);
    }
    static void CallOnEarlierIOSVersionsCallback()
    {
        GCHandle handle = (GCHandle)gcHandleForOnEarlierIOSVersionsCallback;
        OnEarlierIOSVersionsCallback callback = handle.Target as OnEarlierIOSVersionsCallback;

        // 不要になったハンドルを解放する。
        CleanUpHandles();

        callback();
    }