// GENERATED CODE
// Generated by the Java program at /build/annotationProcessors at compile time
// from annotations on Java methods. To update, change the annotations on the
// corresponding Java methods and rerun the build. Manually updating this file
// will cause your build to fail.

#ifndef GeneratedJNIWrappers_h
#define GeneratedJNIWrappers_h

#include "mozilla/jni/Refs.h"

namespace mozilla {
namespace java {

class AlarmReceiver : public mozilla::jni::ObjectBase<AlarmReceiver>
{
public:
    static const char name[];

    explicit AlarmReceiver(const Context& ctx) : ObjectBase<AlarmReceiver>(ctx) {}

    struct NotifyAlarmFired_t {
        typedef AlarmReceiver Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "notifyAlarmFired";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::UI;

    template<class Impl> class Natives;
};

class AndroidGamepadManager : public mozilla::jni::ObjectBase<AndroidGamepadManager>
{
public:
    static const char name[];

    explicit AndroidGamepadManager(const Context& ctx) : ObjectBase<AndroidGamepadManager>(ctx) {}

    struct OnAxisChange_t {
        typedef AndroidGamepadManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                mozilla::jni::BooleanArray::Param,
                mozilla::jni::FloatArray::Param> Args;
        static constexpr char name[] = "onAxisChange";
        static constexpr char signature[] =
                "(I[Z[F)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnButtonChange_t {
        typedef AndroidGamepadManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                bool,
                float> Args;
        static constexpr char name[] = "onButtonChange";
        static constexpr char signature[] =
                "(IIZF)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnGamepadAdded_t {
        typedef AndroidGamepadManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "onGamepadAdded";
        static constexpr char signature[] =
                "(II)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto OnGamepadAdded(int32_t, int32_t) -> void;

    struct OnGamepadChange_t {
        typedef AndroidGamepadManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                bool> Args;
        static constexpr char name[] = "onGamepadChange";
        static constexpr char signature[] =
                "(IZ)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct Start_t {
        typedef AndroidGamepadManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "start";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto Start() -> void;

    struct Stop_t {
        typedef AndroidGamepadManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "stop";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto Stop() -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoAppShell : public mozilla::jni::ObjectBase<GeckoAppShell>
{
public:
    static const char name[];

    explicit GeckoAppShell(const Context& ctx) : ObjectBase<GeckoAppShell>(ctx) {}

    class CameraCallback;

    struct AddFullScreenPluginView_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "addFullScreenPluginView";
        static constexpr char signature[] =
                "(Landroid/view/View;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto AddFullScreenPluginView(mozilla::jni::Object::Param) -> void;

    struct CancelVibrate_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "cancelVibrate";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CancelVibrate() -> void;

    struct CheckURIVisited_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "checkUriVisited";
        static constexpr char signature[] =
                "(Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CheckURIVisited(mozilla::jni::String::Param) -> void;

    struct CloseCamera_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "closeCamera";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CloseCamera() -> void;

    struct CloseNotification_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "closeNotification";
        static constexpr char signature[] =
                "(Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CloseNotification(mozilla::jni::String::Param) -> void;

    struct ConnectionGetMimeType_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::String::LocalRef ReturnType;
        typedef mozilla::jni::String::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "connectionGetMimeType";
        static constexpr char signature[] =
                "(Ljava/net/URLConnection;)Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto ConnectionGetMimeType(mozilla::jni::Object::Param) -> mozilla::jni::String::LocalRef;

    struct CreateInputStream_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "createInputStream";
        static constexpr char signature[] =
                "(Ljava/net/URLConnection;)Ljava/io/InputStream;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CreateInputStream(mozilla::jni::Object::Param) -> mozilla::jni::Object::LocalRef;

    struct CreateShortcut_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "createShortcut";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CreateShortcut(mozilla::jni::String::Param, mozilla::jni::String::Param) -> void;

    struct DisableAlarm_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "disableAlarm";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto DisableAlarm() -> void;

    struct DisableBatteryNotifications_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "disableBatteryNotifications";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto DisableBatteryNotifications() -> void;

    struct DisableNetworkNotifications_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "disableNetworkNotifications";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto DisableNetworkNotifications() -> void;

    struct DisableScreenOrientationNotifications_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "disableScreenOrientationNotifications";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto DisableScreenOrientationNotifications() -> void;

    struct DisableSensor_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "disableSensor";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto DisableSensor(int32_t) -> void;

    struct EnableBatteryNotifications_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "enableBatteryNotifications";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EnableBatteryNotifications() -> void;

    struct EnableLocation_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "enableLocation";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EnableLocation(bool) -> void;

    struct EnableLocationHighAccuracy_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "enableLocationHighAccuracy";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EnableLocationHighAccuracy(bool) -> void;

    struct EnableNetworkNotifications_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "enableNetworkNotifications";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EnableNetworkNotifications() -> void;

    struct EnableScreenOrientationNotifications_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "enableScreenOrientationNotifications";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EnableScreenOrientationNotifications() -> void;

    struct EnableSensor_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "enableSensor";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EnableSensor(int32_t) -> void;

    struct GetApplicationContext_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getApplicationContext";
        static constexpr char signature[] =
                "()Landroid/content/Context;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetApplicationContext() -> mozilla::jni::Object::LocalRef;

    struct GetConnection_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getConnection";
        static constexpr char signature[] =
                "(Ljava/lang/String;)Ljava/net/URLConnection;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetConnection(mozilla::jni::String::Param) -> mozilla::jni::Object::LocalRef;

    struct GetContext_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getContext";
        static constexpr char signature[] =
                "()Landroid/content/Context;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetContext() -> mozilla::jni::Object::LocalRef;

    struct GetCurrentBatteryInformation_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::DoubleArray::LocalRef ReturnType;
        typedef mozilla::jni::DoubleArray::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCurrentBatteryInformation";
        static constexpr char signature[] =
                "()[D";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetCurrentBatteryInformation() -> mozilla::jni::DoubleArray::LocalRef;

    struct GetCurrentNetworkInformation_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::DoubleArray::LocalRef ReturnType;
        typedef mozilla::jni::DoubleArray::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCurrentNetworkInformation";
        static constexpr char signature[] =
                "()[D";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetCurrentNetworkInformation() -> mozilla::jni::DoubleArray::LocalRef;

    struct GetDensity_t {
        typedef GeckoAppShell Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getDensity";
        static constexpr char signature[] =
                "()F";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetDensity() -> float;

    struct GetDpi_t {
        typedef GeckoAppShell Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getDpi";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetDpi() -> int32_t;

    struct GetExceptionStackTrace_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::String::LocalRef ReturnType;
        typedef mozilla::jni::String::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Throwable::Param> Args;
        static constexpr char name[] = "getExceptionStackTrace";
        static constexpr char signature[] =
                "(Ljava/lang/Throwable;)Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::IGNORE;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetExceptionStackTrace(mozilla::jni::Throwable::Param) -> mozilla::jni::String::LocalRef;

    struct GetExtensionFromMimeType_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::String::LocalRef ReturnType;
        typedef mozilla::jni::String::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getExtensionFromMimeType";
        static constexpr char signature[] =
                "(Ljava/lang/String;)Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetExtensionFromMimeType(mozilla::jni::String::Param) -> mozilla::jni::String::LocalRef;

    struct GetHWDecoderCapability_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getHWDecoderCapability";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetHWDecoderCapability() -> bool;

    struct GetHWEncoderCapability_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getHWEncoderCapability";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetHWEncoderCapability() -> bool;

    struct GetHandlersForMimeType_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
        typedef mozilla::jni::ObjectArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getHandlersForMimeType";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetHandlersForMimeType(mozilla::jni::String::Param, mozilla::jni::String::Param) -> mozilla::jni::ObjectArray::LocalRef;

    struct GetHandlersForURL_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
        typedef mozilla::jni::ObjectArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getHandlersForURL";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetHandlersForURL(mozilla::jni::String::Param, mozilla::jni::String::Param) -> mozilla::jni::ObjectArray::LocalRef;

    struct GetIconForExtension_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::ByteArray::LocalRef ReturnType;
        typedef mozilla::jni::ByteArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                int32_t> Args;
        static constexpr char name[] = "getIconForExtension";
        static constexpr char signature[] =
                "(Ljava/lang/String;I)[B";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetIconForExtension(mozilla::jni::String::Param, int32_t) -> mozilla::jni::ByteArray::LocalRef;

    struct GetMaxTouchPoints_t {
        typedef GeckoAppShell Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getMaxTouchPoints";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetMaxTouchPoints() -> int32_t;

    struct GetMimeTypeFromExtensions_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::String::LocalRef ReturnType;
        typedef mozilla::jni::String::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getMimeTypeFromExtensions";
        static constexpr char signature[] =
                "(Ljava/lang/String;)Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetMimeTypeFromExtensions(mozilla::jni::String::Param) -> mozilla::jni::String::LocalRef;

    struct GetNetworkLinkType_t {
        typedef GeckoAppShell Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getNetworkLinkType";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetNetworkLinkType() -> int32_t;

    struct GetProxyForURI_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::String::LocalRef ReturnType;
        typedef mozilla::jni::String::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                int32_t> Args;
        static constexpr char name[] = "getProxyForURI";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetProxyForURI(mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, int32_t) -> mozilla::jni::String::LocalRef;

    struct GetScreenAngle_t {
        typedef GeckoAppShell Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getScreenAngle";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetScreenAngle() -> int32_t;

    struct GetScreenDepth_t {
        typedef GeckoAppShell Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getScreenDepth";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetScreenDepth() -> int32_t;

    struct GetScreenOrientation_t {
        typedef GeckoAppShell Owner;
        typedef int16_t ReturnType;
        typedef int16_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getScreenOrientation";
        static constexpr char signature[] =
                "()S";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetScreenOrientation() -> int16_t;

    struct GetScreenSize_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getScreenSize";
        static constexpr char signature[] =
                "()Landroid/graphics/Rect;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetScreenSize() -> mozilla::jni::Object::LocalRef;

    struct GetShowPasswordSetting_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getShowPasswordSetting";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetShowPasswordSetting() -> bool;

    struct GetSystemColors_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::IntArray::LocalRef ReturnType;
        typedef mozilla::jni::IntArray::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getSystemColors";
        static constexpr char signature[] =
                "()[I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetSystemColors() -> mozilla::jni::IntArray::LocalRef;

    struct HandleGeckoMessage_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "handleGeckoMessage";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/util/NativeJSContainer;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto HandleGeckoMessage(mozilla::jni::Object::Param) -> void;

    struct HandleUncaughtException_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Throwable::Param> Args;
        static constexpr char name[] = "handleUncaughtException";
        static constexpr char signature[] =
                "(Ljava/lang/Throwable;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::IGNORE;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto HandleUncaughtException(mozilla::jni::Throwable::Param) -> void;

    struct HideProgressDialog_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "hideProgressDialog";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto HideProgressDialog() -> void;

    struct InitCamera_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::IntArray::LocalRef ReturnType;
        typedef mozilla::jni::IntArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                int32_t,
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "initCamera";
        static constexpr char signature[] =
                "(Ljava/lang/String;III)[I";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto InitCamera(mozilla::jni::String::Param, int32_t, int32_t, int32_t) -> mozilla::jni::IntArray::LocalRef;

    struct IsNetworkLinkKnown_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isNetworkLinkKnown";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto IsNetworkLinkKnown() -> bool;

    struct IsNetworkLinkUp_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isNetworkLinkUp";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto IsNetworkLinkUp() -> bool;

    struct IsTablet_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isTablet";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto IsTablet() -> bool;

    struct KillAnyZombies_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "killAnyZombies";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto KillAnyZombies() -> void;

    struct LoadPluginClass_t {
        typedef GeckoAppShell Owner;
        typedef mozilla::jni::Class::LocalRef ReturnType;
        typedef mozilla::jni::Class::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "loadPluginClass";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Class;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto LoadPluginClass(mozilla::jni::String::Param, mozilla::jni::String::Param) -> mozilla::jni::Class::LocalRef;

    struct LockScreenOrientation_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "lockScreenOrientation";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto LockScreenOrientation(int32_t) -> void;

    struct MarkURIVisited_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "markUriVisited";
        static constexpr char signature[] =
                "(Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto MarkURIVisited(mozilla::jni::String::Param) -> void;

    struct MoveTaskToBack_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "moveTaskToBack";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto MoveTaskToBack() -> void;

    struct NotifyObservers_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "nativeNotifyObservers";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct NotifyAlertListener_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "notifyAlertListener";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct NotifyUriVisited_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "notifyUriVisited";
        static constexpr char signature[] =
                "(Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct NotifyWakeLockChanged_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "notifyWakeLockChanged";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto NotifyWakeLockChanged(mozilla::jni::String::Param, mozilla::jni::String::Param) -> void;

    struct OnFullScreenPluginHidden_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "onFullScreenPluginHidden";
        static constexpr char signature[] =
                "(Landroid/view/View;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnLocationChanged_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                double,
                double,
                double,
                float,
                float,
                float,
                int64_t> Args;
        static constexpr char name[] = "onLocationChanged";
        static constexpr char signature[] =
                "(DDDFFFJ)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnSensorChanged_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                float,
                float,
                float,
                float,
                int32_t,
                int64_t> Args;
        static constexpr char name[] = "onSensorChanged";
        static constexpr char signature[] =
                "(IFFFFIJ)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OpenUriExternal_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "openUriExternal";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto OpenUriExternal(mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param) -> bool;

    struct OpenWindowForNotification_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "openWindowForNotification";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto OpenWindowForNotification() -> void;

    struct PerformHapticFeedback_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "performHapticFeedback";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto PerformHapticFeedback(bool) -> void;

    struct RemoveFullScreenPluginView_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "removeFullScreenPluginView";
        static constexpr char signature[] =
                "(Landroid/view/View;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto RemoveFullScreenPluginView(mozilla::jni::Object::Param) -> void;

    struct ReportJavaCrash_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Throwable::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "reportJavaCrash";
        static constexpr char signature[] =
                "(Ljava/lang/Throwable;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct ScheduleRestart_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "scheduleRestart";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto ScheduleRestart() -> void;

    struct SetAlarm_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "setAlarm";
        static constexpr char signature[] =
                "(II)Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto SetAlarm(int32_t, int32_t) -> bool;

    struct SetFullScreen_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "setFullScreen";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto SetFullScreen(bool) -> void;

    struct SetKeepScreenOn_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "setKeepScreenOn";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto SetKeepScreenOn(bool) -> void;

    struct SetScreenDepthOverride_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "setScreenDepthOverride";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto SetScreenDepthOverride(int32_t) -> void;

    struct SetURITitle_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "setUriTitle";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto SetURITitle(mozilla::jni::String::Param, mozilla::jni::String::Param) -> void;

    struct ShowNotification_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "showNotification";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto ShowNotification(mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param) -> void;

    struct SyncNotifyObservers_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "syncNotifyObservers";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct UnlockProfile_t {
        typedef GeckoAppShell Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "unlockProfile";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto UnlockProfile() -> bool;

    struct UnlockScreenOrientation_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "unlockScreenOrientation";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto UnlockScreenOrientation() -> void;

    struct Vibrate_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int64_t> Args;
        static constexpr char name[] = "vibrate";
        static constexpr char signature[] =
                "(J)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto Vibrate(int64_t) -> void;

    struct Vibrate2_t {
        typedef GeckoAppShell Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::LongArray::Param,
                int32_t> Args;
        static constexpr char name[] = "vibrate";
        static constexpr char signature[] =
                "([JI)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto Vibrate(mozilla::jni::LongArray::Param, int32_t) -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoAppShell::CameraCallback : public mozilla::jni::ObjectBase<CameraCallback>
{
public:
    static const char name[];

    explicit CameraCallback(const Context& ctx) : ObjectBase<CameraCallback>(ctx) {}

    struct OnFrameData_t {
        typedef CameraCallback Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                mozilla::jni::ByteArray::Param> Args;
        static constexpr char name[] = "onFrameData";
        static constexpr char signature[] =
                "(I[B)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::GECKO;

    template<class Impl> class Natives;
};

class GeckoBatteryManager : public mozilla::jni::ObjectBase<GeckoBatteryManager>
{
public:
    static const char name[];

    explicit GeckoBatteryManager(const Context& ctx) : ObjectBase<GeckoBatteryManager>(ctx) {}

    struct OnBatteryChange_t {
        typedef GeckoBatteryManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                double,
                bool,
                double> Args;
        static constexpr char name[] = "onBatteryChange";
        static constexpr char signature[] =
                "(DZD)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::UI;

    template<class Impl> class Natives;
};

class GeckoEditable : public mozilla::jni::ObjectBase<GeckoEditable>
{
public:
    static const char name[];

    explicit GeckoEditable(const Context& ctx) : ObjectBase<GeckoEditable>(ctx) {}

    struct New_t {
        typedef GeckoEditable Owner;
        typedef GeckoEditable::LocalRef ReturnType;
        typedef GeckoEditable::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoView;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New(mozilla::jni::Object::Param) -> GeckoEditable::LocalRef;

    struct DisposeNative_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "disposeNative";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct NotifyIME_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "notifyIME";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto NotifyIME(int32_t) const -> void;

    struct NotifyIMEContext_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "notifyIMEContext";
        static constexpr char signature[] =
                "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto NotifyIMEContext(int32_t, mozilla::jni::String::Param, mozilla::jni::String::Param, mozilla::jni::String::Param) const -> void;

    struct OnDefaultKeyEvent_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "onDefaultKeyEvent";
        static constexpr char signature[] =
                "(Landroid/view/KeyEvent;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto OnDefaultKeyEvent(mozilla::jni::Object::Param) const -> void;

    struct OnImeAddCompositionRange_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                bool,
                int32_t,
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "onImeAddCompositionRange";
        static constexpr char signature[] =
                "(IIIIIZIII)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct OnImeReplaceText_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "onImeReplaceText";
        static constexpr char signature[] =
                "(IILjava/lang/String;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct OnImeRequestCursorUpdates_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "onImeRequestCursorUpdates";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct OnImeSynchronize_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "onImeSynchronize";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct OnImeUpdateComposition_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "onImeUpdateComposition";
        static constexpr char signature[] =
                "(II)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct OnKeyEvent_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int64_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                bool,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "onKeyEvent";
        static constexpr char signature[] =
                "(IIIIJIIIIIZLandroid/view/KeyEvent;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct OnSelectionChange_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "onSelectionChange";
        static constexpr char signature[] =
                "(II)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::IGNORE;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto OnSelectionChange(int32_t, int32_t) const -> void;

    struct OnTextChange_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                int32_t,
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "onTextChange";
        static constexpr char signature[] =
                "(Ljava/lang/CharSequence;III)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::IGNORE;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto OnTextChange(mozilla::jni::String::Param, int32_t, int32_t, int32_t) const -> void;

    struct OnViewChange_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "onViewChange";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoView;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto OnViewChange(mozilla::jni::Object::Param) const -> void;

    struct UpdateCompositionRects_t {
        typedef GeckoEditable Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::ObjectArray::Param> Args;
        static constexpr char name[] = "updateCompositionRects";
        static constexpr char signature[] =
                "([Landroid/graphics/RectF;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto UpdateCompositionRects(mozilla::jni::ObjectArray::Param) const -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoEditableListener : public mozilla::jni::ObjectBase<GeckoEditableListener>
{
public:
    static const char name[];

    explicit GeckoEditableListener(const Context& ctx) : ObjectBase<GeckoEditableListener>(ctx) {}

    static const int32_t NOTIFY_IME_OF_BLUR = 2;

    static const int32_t NOTIFY_IME_OF_FOCUS = 1;

    static const int32_t NOTIFY_IME_OPEN_VKB = -2;

    static const int32_t NOTIFY_IME_REPLY_EVENT = -1;

    static const int32_t NOTIFY_IME_TO_CANCEL_COMPOSITION = 9;

    static const int32_t NOTIFY_IME_TO_COMMIT_COMPOSITION = 8;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class GeckoNetworkManager : public mozilla::jni::ObjectBase<GeckoNetworkManager>
{
public:
    static const char name[];

    explicit GeckoNetworkManager(const Context& ctx) : ObjectBase<GeckoNetworkManager>(ctx) {}

    struct OnConnectionChanged_t {
        typedef GeckoNetworkManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                mozilla::jni::String::Param,
                bool,
                int32_t> Args;
        static constexpr char name[] = "onConnectionChanged";
        static constexpr char signature[] =
                "(ILjava/lang/String;ZI)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnStatusChanged_t {
        typedef GeckoNetworkManager Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "onStatusChanged";
        static constexpr char signature[] =
                "(Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoScreenOrientation : public mozilla::jni::ObjectBase<GeckoScreenOrientation>
{
public:
    static const char name[];

    explicit GeckoScreenOrientation(const Context& ctx) : ObjectBase<GeckoScreenOrientation>(ctx) {}

    struct OnOrientationChange_t {
        typedef GeckoScreenOrientation Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int16_t,
                int16_t> Args;
        static constexpr char name[] = "onOrientationChange";
        static constexpr char signature[] =
                "(SS)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoThread : public mozilla::jni::ObjectBase<GeckoThread>
{
public:
    static const char name[];

    explicit GeckoThread(const Context& ctx) : ObjectBase<GeckoThread>(ctx) {}

    class State;

    struct CheckAndSetState_t {
        typedef GeckoThread Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "checkAndSetState";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoThread$State;Lorg/mozilla/gecko/GeckoThread$State;)Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CheckAndSetState(mozilla::jni::Object::Param, mozilla::jni::Object::Param) -> bool;

    struct CreateServices_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "nativeCreateServices";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnPause_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "nativeOnPause";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnResume_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "nativeOnResume";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct PumpMessageLoop_t {
        typedef GeckoThread Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "pumpMessageLoop";
        static constexpr char signature[] =
                "(Landroid/os/Message;)Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto PumpMessageLoop(mozilla::jni::Object::Param) -> bool;

    struct RequestUiThreadCallback_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int64_t> Args;
        static constexpr char name[] = "requestUiThreadCallback";
        static constexpr char signature[] =
                "(J)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto RequestUiThreadCallback(int64_t) -> void;

    struct RunUiThreadCallback_t {
        typedef GeckoThread Owner;
        typedef int64_t ReturnType;
        typedef int64_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "runUiThreadCallback";
        static constexpr char signature[] =
                "()J";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SetState_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "setState";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoThread$State;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto SetState(mozilla::jni::Object::Param) -> void;

    struct SpeculativeConnect_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "speculativeConnectNative";
        static constexpr char signature[] =
                "(Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct WaitOnGecko_t {
        typedef GeckoThread Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "waitOnGecko";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct ClsLoader_t {
        typedef GeckoThread Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "clsLoader";
        static constexpr char signature[] =
                "Ljava/lang/ClassLoader;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto ClsLoader() -> mozilla::jni::Object::LocalRef;

    struct MsgQueue_t {
        typedef GeckoThread Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "msgQueue";
        static constexpr char signature[] =
                "Landroid/os/MessageQueue;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto MsgQueue() -> mozilla::jni::Object::LocalRef;

    static auto MsgQueue(mozilla::jni::Object::Param) -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoThread::State : public mozilla::jni::ObjectBase<State>
{
public:
    static const char name[];

    explicit State(const Context& ctx) : ObjectBase<State>(ctx) {}

    struct EXITED_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "EXITED";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EXITED() -> State::LocalRef;

    struct EXITING_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "EXITING";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto EXITING() -> State::LocalRef;

    struct INITIAL_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "INITIAL";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto INITIAL() -> State::LocalRef;

    struct JNI_READY_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "JNI_READY";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto JNI_READY() -> State::LocalRef;

    struct LAUNCHED_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "LAUNCHED";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto LAUNCHED() -> State::LocalRef;

    struct LIBS_READY_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "LIBS_READY";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto LIBS_READY() -> State::LocalRef;

    struct MOZGLUE_READY_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "MOZGLUE_READY";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto MOZGLUE_READY() -> State::LocalRef;

    struct PROFILE_READY_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "PROFILE_READY";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto PROFILE_READY() -> State::LocalRef;

    struct RUNNING_t {
        typedef State Owner;
        typedef State::LocalRef ReturnType;
        typedef State::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "RUNNING";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/GeckoThread$State;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto RUNNING() -> State::LocalRef;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class GeckoView : public mozilla::jni::ObjectBase<GeckoView>
{
public:
    static const char name[];

    explicit GeckoView(const Context& ctx) : ObjectBase<GeckoView>(ctx) {}

    class Window;

    static const int32_t LOAD_DEFAULT = 0;

    static const int32_t LOAD_NEW_TAB = 1;

    static const int32_t LOAD_SWITCH_TAB = 2;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class GeckoView::Window : public mozilla::jni::ObjectBase<Window>
{
public:
    static const char name[];

    explicit Window(const Context& ctx) : ObjectBase<Window>(ctx) {}

    struct Close_t {
        typedef Window Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "close";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct DisposeNative_t {
        typedef Window Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "disposeNative";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct LoadUri_t {
        typedef Window Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                int32_t> Args;
        static constexpr char name[] = "loadUri";
        static constexpr char signature[] =
                "(Ljava/lang/String;I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct Open_t {
        typedef Window Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                Window::Param,
                GeckoView::Param,
                mozilla::jni::Object::Param,
                mozilla::jni::String::Param,
                int32_t> Args;
        static constexpr char name[] = "open";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoView$Window;Lorg/mozilla/gecko/GeckoView;Ljava/lang/Object;Ljava/lang/String;I)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct Reattach_t {
        typedef Window Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                GeckoView::Param,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "reattach";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/GeckoView;Ljava/lang/Object;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class PrefsHelper : public mozilla::jni::ObjectBase<PrefsHelper>
{
public:
    static const char name[];

    explicit PrefsHelper(const Context& ctx) : ObjectBase<PrefsHelper>(ctx) {}

    struct CallPrefHandler_t {
        typedef PrefsHelper Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param,
                int32_t,
                mozilla::jni::String::Param,
                bool,
                int32_t,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "callPrefHandler";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/PrefsHelper$PrefHandler;ILjava/lang/String;ZILjava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto CallPrefHandler(mozilla::jni::Object::Param, int32_t, mozilla::jni::String::Param, bool, int32_t, mozilla::jni::String::Param) -> void;

    struct AddObserver_t {
        typedef PrefsHelper Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::ObjectArray::Param,
                mozilla::jni::Object::Param,
                mozilla::jni::ObjectArray::Param> Args;
        static constexpr char name[] = "nativeAddObserver";
        static constexpr char signature[] =
                "([Ljava/lang/String;Lorg/mozilla/gecko/PrefsHelper$PrefHandler;[Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct GetPrefs_t {
        typedef PrefsHelper Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::ObjectArray::Param,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "nativeGetPrefs";
        static constexpr char signature[] =
                "([Ljava/lang/String;Lorg/mozilla/gecko/PrefsHelper$PrefHandler;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct RemoveObserver_t {
        typedef PrefsHelper Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::ObjectArray::Param> Args;
        static constexpr char name[] = "nativeRemoveObserver";
        static constexpr char signature[] =
                "([Ljava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct SetPref_t {
        typedef PrefsHelper Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                bool,
                int32_t,
                bool,
                int32_t,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "nativeSetPref";
        static constexpr char signature[] =
                "(Ljava/lang/String;ZIZILjava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnPrefChange_t {
        typedef PrefsHelper Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                int32_t,
                bool,
                int32_t,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "onPrefChange";
        static constexpr char signature[] =
                "(Ljava/lang/String;IZILjava/lang/String;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto OnPrefChange(mozilla::jni::String::Param, int32_t, bool, int32_t, mozilla::jni::String::Param) -> void;

    static const int32_t PREF_BOOL = 1;

    static const int32_t PREF_FINISH = 0;

    static const int32_t PREF_INT = 2;

    static const int32_t PREF_INVALID = -1;

    static const int32_t PREF_STRING = 3;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class SurfaceTextureListener : public mozilla::jni::ObjectBase<SurfaceTextureListener>
{
public:
    static const char name[];

    explicit SurfaceTextureListener(const Context& ctx) : ObjectBase<SurfaceTextureListener>(ctx) {}

    struct New_t {
        typedef SurfaceTextureListener Owner;
        typedef SurfaceTextureListener::LocalRef ReturnType;
        typedef SurfaceTextureListener::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New() -> SurfaceTextureListener::LocalRef;

    struct OnFrameAvailable_t {
        typedef SurfaceTextureListener Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "nativeOnFrameAvailable";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class GeckoLayerClient : public mozilla::jni::ObjectBase<GeckoLayerClient>
{
public:
    static const char name[];

    explicit GeckoLayerClient(const Context& ctx) : ObjectBase<GeckoLayerClient>(ctx) {}

    struct ContentDocumentChanged_t {
        typedef GeckoLayerClient Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "contentDocumentChanged";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto ContentDocumentChanged() const -> void;

    struct CreateFrame_t {
        typedef GeckoLayerClient Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "createFrame";
        static constexpr char signature[] =
                "()Lorg/mozilla/gecko/gfx/LayerRenderer$Frame;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto CreateFrame() const -> mozilla::jni::Object::LocalRef;

    struct IsContentDocumentDisplayed_t {
        typedef GeckoLayerClient Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isContentDocumentDisplayed";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto IsContentDocumentDisplayed() const -> bool;

    struct OnGeckoReady_t {
        typedef GeckoLayerClient Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "onGeckoReady";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto OnGeckoReady() const -> void;

    struct SetFirstPaintViewport_t {
        typedef GeckoLayerClient Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                float,
                float,
                float,
                float,
                float,
                float,
                float> Args;
        static constexpr char name[] = "setFirstPaintViewport";
        static constexpr char signature[] =
                "(FFFFFFF)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SetFirstPaintViewport(float, float, float, float, float, float, float) const -> void;

    struct SyncFrameMetrics_t {
        typedef GeckoLayerClient Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<
                float,
                float,
                float,
                float,
                float,
                float,
                float,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                float,
                bool,
                int32_t> Args;
        static constexpr char name[] = "syncFrameMetrics";
        static constexpr char signature[] =
                "(FFFFFFFIIIIFZI)Lorg/mozilla/gecko/gfx/ViewTransform;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SyncFrameMetrics(float, float, float, float, float, float, float, int32_t, int32_t, int32_t, int32_t, float, bool, int32_t) const -> mozilla::jni::Object::LocalRef;

    struct SynthesizeNativeMouseEvent_t {
        typedef GeckoLayerClient Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "synthesizeNativeMouseEvent";
        static constexpr char signature[] =
                "(III)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SynthesizeNativeMouseEvent(int32_t, int32_t, int32_t) const -> void;

    struct SynthesizeNativeTouchPoint_t {
        typedef GeckoLayerClient Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                double,
                int32_t> Args;
        static constexpr char name[] = "synthesizeNativeTouchPoint";
        static constexpr char signature[] =
                "(IIIIDI)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SynthesizeNativeTouchPoint(int32_t, int32_t, int32_t, int32_t, double, int32_t) const -> void;

    struct ClearColor_t {
        typedef GeckoLayerClient Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "mClearColor";
        static constexpr char signature[] =
                "I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto ClearColor() const -> int32_t;

    auto ClearColor(int32_t) const -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class ImmutableViewportMetrics : public mozilla::jni::ObjectBase<ImmutableViewportMetrics>
{
public:
    static const char name[];

    explicit ImmutableViewportMetrics(const Context& ctx) : ObjectBase<ImmutableViewportMetrics>(ctx) {}

    struct New_t {
        typedef ImmutableViewportMetrics Owner;
        typedef ImmutableViewportMetrics::LocalRef ReturnType;
        typedef ImmutableViewportMetrics::Param SetterType;
        typedef mozilla::jni::Args<
                float,
                float,
                float,
                float,
                float,
                float,
                float,
                float,
                float,
                float,
                int32_t,
                int32_t,
                float> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "(FFFFFFFFFFIIF)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New(float, float, float, float, float, float, float, float, float, float, int32_t, int32_t, float) -> ImmutableViewportMetrics::LocalRef;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::GECKO;

};

class LayerRenderer : public mozilla::jni::ObjectBase<LayerRenderer>
{
public:
    static const char name[];

    explicit LayerRenderer(const Context& ctx) : ObjectBase<LayerRenderer>(ctx) {}

    class Frame;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class LayerRenderer::Frame : public mozilla::jni::ObjectBase<Frame>
{
public:
    static const char name[];

    explicit Frame(const Context& ctx) : ObjectBase<Frame>(ctx) {}

    struct BeginDrawing_t {
        typedef Frame Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "beginDrawing";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto BeginDrawing() const -> void;

    struct EndDrawing_t {
        typedef Frame Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "endDrawing";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto EndDrawing() const -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class LayerView : public mozilla::jni::ObjectBase<LayerView>
{
public:
    static const char name[];

    explicit LayerView(const Context& ctx) : ObjectBase<LayerView>(ctx) {}

    class Compositor;

    struct GetCompositor_t {
        typedef LayerView Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCompositor";
        static constexpr char signature[] =
                "()Ljava/lang/Object;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetCompositor() const -> mozilla::jni::Object::LocalRef;

    struct UpdateZoomedView_t {
        typedef LayerView Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::ByteBuffer::Param> Args;
        static constexpr char name[] = "updateZoomedView";
        static constexpr char signature[] =
                "(Ljava/nio/ByteBuffer;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto UpdateZoomedView(mozilla::jni::ByteBuffer::Param) -> void;

    struct CompositorCreated_t {
        typedef LayerView Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "mCompositorCreated";
        static constexpr char signature[] =
                "Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto CompositorCreated() const -> bool;

    auto CompositorCreated(bool) const -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class LayerView::Compositor : public mozilla::jni::ObjectBase<Compositor>
{
public:
    static const char name[];

    explicit Compositor(const Context& ctx) : ObjectBase<Compositor>(ctx) {}

    struct AttachToJava_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "attachToJava";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/gfx/GeckoLayerClient;Lorg/mozilla/gecko/gfx/NativePanZoomController;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct CreateCompositor_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "createCompositor";
        static constexpr char signature[] =
                "(IILjava/lang/Object;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::PROXY;
    };

    struct Destroy_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "destroy";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Destroy() const -> void;

    struct DisposeNative_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "disposeNative";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct OnSizeChanged_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t> Args;
        static constexpr char name[] = "onSizeChanged";
        static constexpr char signature[] =
                "(IIII)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct Reattach_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "reattach";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Reattach() const -> void;

    struct SyncInvalidateAndScheduleComposite_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "syncInvalidateAndScheduleComposite";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SyncPauseCompositor_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "syncPauseCompositor";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SyncResumeResizeCompositor_t {
        typedef Compositor Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "syncResumeResizeCompositor";
        static constexpr char signature[] =
                "(IILjava/lang/Object;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class NativePanZoomController : public mozilla::jni::ObjectBase<NativePanZoomController>
{
public:
    static const char name[];

    explicit NativePanZoomController(const Context& ctx) : ObjectBase<NativePanZoomController>(ctx) {}

    struct AdjustScrollForSurfaceShift_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                float,
                float> Args;
        static constexpr char name[] = "adjustScrollForSurfaceShift";
        static constexpr char signature[] =
                "(FF)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct Destroy_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "destroy";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Destroy() const -> void;

    struct DisposeNative_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "disposeNative";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::GECKO;
    };

    struct HandleMotionEvent_t {
        typedef NativePanZoomController Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int64_t,
                int32_t,
                mozilla::jni::IntArray::Param,
                mozilla::jni::FloatArray::Param,
                mozilla::jni::FloatArray::Param,
                mozilla::jni::FloatArray::Param,
                mozilla::jni::FloatArray::Param,
                mozilla::jni::FloatArray::Param,
                mozilla::jni::FloatArray::Param> Args;
        static constexpr char name[] = "handleMotionEvent";
        static constexpr char signature[] =
                "(IIJI[I[F[F[F[F[F[F)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct HandleMotionEventVelocity_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int64_t,
                float> Args;
        static constexpr char name[] = "handleMotionEventVelocity";
        static constexpr char signature[] =
                "(JF)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct HandleMouseEvent_t {
        typedef NativePanZoomController Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int64_t,
                int32_t,
                float,
                float,
                int32_t> Args;
        static constexpr char name[] = "handleMouseEvent";
        static constexpr char signature[] =
                "(IJIFFI)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct HandleScrollEvent_t {
        typedef NativePanZoomController Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                int64_t,
                int32_t,
                float,
                float,
                float,
                float> Args;
        static constexpr char name[] = "handleScrollEvent";
        static constexpr char signature[] =
                "(JIFFFF)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct SetIsLongpressEnabled_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "nativeSetIsLongpressEnabled";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OnSelectionDragState_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "onSelectionDragState";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto OnSelectionDragState(bool) const -> void;

    struct SetScrollingRootContent_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "setScrollingRootContent";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::UI;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SetScrollingRootContent(bool) const -> void;

    struct UpdateOverscrollOffset_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                float,
                float> Args;
        static constexpr char name[] = "updateOverscrollOffset";
        static constexpr char signature[] =
                "(FF)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto UpdateOverscrollOffset(float, float) const -> void;

    struct UpdateOverscrollVelocity_t {
        typedef NativePanZoomController Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                float,
                float> Args;
        static constexpr char name[] = "updateOverscrollVelocity";
        static constexpr char signature[] =
                "(FF)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto UpdateOverscrollVelocity(float, float) const -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

    template<class Impl> class Natives;
};

class ProgressiveUpdateData : public mozilla::jni::ObjectBase<ProgressiveUpdateData>
{
public:
    static const char name[];

    explicit ProgressiveUpdateData(const Context& ctx) : ObjectBase<ProgressiveUpdateData>(ctx) {}

    struct New_t {
        typedef ProgressiveUpdateData Owner;
        typedef ProgressiveUpdateData::LocalRef ReturnType;
        typedef ProgressiveUpdateData::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New() -> ProgressiveUpdateData::LocalRef;

    struct SetViewport_t {
        typedef ProgressiveUpdateData Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "setViewport";
        static constexpr char signature[] =
                "(Lorg/mozilla/gecko/gfx/ImmutableViewportMetrics;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SetViewport(mozilla::jni::Object::Param) const -> void;

    struct Abort_t {
        typedef ProgressiveUpdateData Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "abort";
        static constexpr char signature[] =
                "Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Abort() const -> bool;

    auto Abort(bool) const -> void;

    struct Scale_t {
        typedef ProgressiveUpdateData Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "scale";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Scale() const -> float;

    auto Scale(float) const -> void;

    struct X_t {
        typedef ProgressiveUpdateData Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "x";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto X() const -> float;

    auto X(float) const -> void;

    struct Y_t {
        typedef ProgressiveUpdateData Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "y";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Y() const -> float;

    auto Y(float) const -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class StackScroller : public mozilla::jni::ObjectBase<StackScroller>
{
public:
    static const char name[];

    explicit StackScroller(const Context& ctx) : ObjectBase<StackScroller>(ctx) {}

    struct New_t {
        typedef StackScroller Owner;
        typedef StackScroller::LocalRef ReturnType;
        typedef StackScroller::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "(Landroid/content/Context;)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New(mozilla::jni::Object::Param, StackScroller::LocalRef*) -> nsresult;

    struct AbortAnimation_t {
        typedef StackScroller Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "abortAnimation";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto AbortAnimation() const -> nsresult;

    struct ComputeScrollOffset_t {
        typedef StackScroller Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                int64_t> Args;
        static constexpr char name[] = "computeScrollOffset";
        static constexpr char signature[] =
                "(J)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto ComputeScrollOffset(int64_t, bool*) const -> nsresult;

    struct Fling_t {
        typedef StackScroller Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int64_t> Args;
        static constexpr char name[] = "fling";
        static constexpr char signature[] =
                "(IIIIIIIIIIJ)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Fling(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int64_t) const -> nsresult;

    struct ForceFinished_t {
        typedef StackScroller Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                bool> Args;
        static constexpr char name[] = "forceFinished";
        static constexpr char signature[] =
                "(Z)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto ForceFinished(bool) const -> nsresult;

    struct GetCurrSpeedX_t {
        typedef StackScroller Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCurrSpeedX";
        static constexpr char signature[] =
                "()F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetCurrSpeedX(float*) const -> nsresult;

    struct GetCurrSpeedY_t {
        typedef StackScroller Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCurrSpeedY";
        static constexpr char signature[] =
                "()F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetCurrSpeedY(float*) const -> nsresult;

    struct GetCurrX_t {
        typedef StackScroller Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCurrX";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetCurrX(int32_t*) const -> nsresult;

    struct GetCurrY_t {
        typedef StackScroller Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getCurrY";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetCurrY(int32_t*) const -> nsresult;

    struct GetFinalX_t {
        typedef StackScroller Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getFinalX";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetFinalX(int32_t*) const -> nsresult;

    struct GetFinalY_t {
        typedef StackScroller Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getFinalY";
        static constexpr char signature[] =
                "()I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto GetFinalY(int32_t*) const -> nsresult;

    struct InitContants_t {
        typedef StackScroller Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "initContants";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto InitContants() -> nsresult;

    struct IsFinished_t {
        typedef StackScroller Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "isFinished";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto IsFinished(bool*) const -> nsresult;

    struct SetFinalX_t {
        typedef StackScroller Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t> Args;
        static constexpr char name[] = "setFinalX";
        static constexpr char signature[] =
                "(I)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SetFinalX(int32_t) const -> nsresult;

    struct SpringBack_t {
        typedef StackScroller Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int64_t> Args;
        static constexpr char name[] = "springBack";
        static constexpr char signature[] =
                "(IIIIIIJ)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto SpringBack(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int64_t, bool*) const -> nsresult;

    struct StartScroll_t {
        typedef StackScroller Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                int32_t,
                int32_t,
                int32_t,
                int32_t,
                int64_t,
                int32_t> Args;
        static constexpr char name[] = "startScroll";
        static constexpr char signature[] =
                "(IIIIJI)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto StartScroll(int32_t, int32_t, int32_t, int32_t, int64_t, int32_t) const -> nsresult;

    struct ViscousFluid_t {
        typedef StackScroller Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<
                float> Args;
        static constexpr char name[] = "viscousFluid";
        static constexpr char signature[] =
                "(F)F";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto ViscousFluid(float, float*) -> nsresult;

    static const int32_t FLING_MODE = 1;

    static const int32_t SCROLL_MODE = 0;

    struct MFlywheel_t {
        typedef StackScroller Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "mFlywheel";
        static constexpr char signature[] =
                "Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto MFlywheel(bool*) const -> nsresult;

    struct MMode_t {
        typedef StackScroller Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "mMode";
        static constexpr char signature[] =
                "I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto MMode(int32_t*) const -> nsresult;

    auto MMode(int32_t) const -> nsresult;

    struct MScrollerX_t {
        typedef StackScroller Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "mScrollerX";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/gfx/StackScroller$SplineStackScroller;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto MScrollerX(mozilla::jni::Object::LocalRef*) const -> nsresult;

    struct MScrollerY_t {
        typedef StackScroller Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "mScrollerY";
        static constexpr char signature[] =
                "Lorg/mozilla/gecko/gfx/StackScroller$SplineStackScroller;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto MScrollerY(mozilla::jni::Object::LocalRef*) const -> nsresult;

    struct SViscousFluidNormalize_t {
        typedef StackScroller Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "sViscousFluidNormalize";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto SViscousFluidNormalize(float*) -> nsresult;

    static auto SViscousFluidNormalize(float) -> nsresult;

    struct SViscousFluidScale_t {
        typedef StackScroller Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "sViscousFluidScale";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::NSRESULT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto SViscousFluidScale(float*) -> nsresult;

    static auto SViscousFluidScale(float) -> nsresult;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class ViewTransform : public mozilla::jni::ObjectBase<ViewTransform>
{
public:
    static const char name[];

    explicit ViewTransform(const Context& ctx) : ObjectBase<ViewTransform>(ctx) {}

    struct New_t {
        typedef ViewTransform Owner;
        typedef ViewTransform::LocalRef ReturnType;
        typedef ViewTransform::Param SetterType;
        typedef mozilla::jni::Args<
                float,
                float,
                float> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "(FFF)V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New(float, float, float) -> ViewTransform::LocalRef;

    struct FixedLayerMarginBottom_t {
        typedef ViewTransform Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "fixedLayerMarginBottom";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto FixedLayerMarginBottom() const -> float;

    auto FixedLayerMarginBottom(float) const -> void;

    struct FixedLayerMarginLeft_t {
        typedef ViewTransform Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "fixedLayerMarginLeft";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto FixedLayerMarginLeft() const -> float;

    auto FixedLayerMarginLeft(float) const -> void;

    struct FixedLayerMarginRight_t {
        typedef ViewTransform Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "fixedLayerMarginRight";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto FixedLayerMarginRight() const -> float;

    auto FixedLayerMarginRight(float) const -> void;

    struct FixedLayerMarginTop_t {
        typedef ViewTransform Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "fixedLayerMarginTop";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto FixedLayerMarginTop() const -> float;

    auto FixedLayerMarginTop(float) const -> void;

    struct Height_t {
        typedef ViewTransform Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "height";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Height() const -> float;

    auto Height(float) const -> void;

    struct Scale_t {
        typedef ViewTransform Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "scale";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Scale() const -> float;

    auto Scale(float) const -> void;

    struct Width_t {
        typedef ViewTransform Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "width";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Width() const -> float;

    auto Width(float) const -> void;

    struct X_t {
        typedef ViewTransform Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "x";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto X() const -> float;

    auto X(float) const -> void;

    struct Y_t {
        typedef ViewTransform Owner;
        typedef float ReturnType;
        typedef float SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "y";
        static constexpr char signature[] =
                "F";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto Y() const -> float;

    auto Y(float) const -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class Clipboard : public mozilla::jni::ObjectBase<Clipboard>
{
public:
    static const char name[];

    explicit Clipboard(const Context& ctx) : ObjectBase<Clipboard>(ctx) {}

    struct ClearText_t {
        typedef Clipboard Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "clearText";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto ClearText() -> void;

    struct GetText_t {
        typedef Clipboard Owner;
        typedef mozilla::jni::String::LocalRef ReturnType;
        typedef mozilla::jni::String::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "getText";
        static constexpr char signature[] =
                "()Ljava/lang/String;";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto GetText() -> mozilla::jni::String::LocalRef;

    struct HasText_t {
        typedef Clipboard Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "hasText";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto HasText() -> bool;

    struct SetText_t {
        typedef Clipboard Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "setText";
        static constexpr char signature[] =
                "(Ljava/lang/CharSequence;)V";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto SetText(mozilla::jni::String::Param) -> void;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::GECKO;

};

class HardwareCodecCapabilityUtils : public mozilla::jni::ObjectBase<HardwareCodecCapabilityUtils>
{
public:
    static const char name[];

    explicit HardwareCodecCapabilityUtils(const Context& ctx) : ObjectBase<HardwareCodecCapabilityUtils>(ctx) {}

    struct HasHWVP9_t {
        typedef HardwareCodecCapabilityUtils Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "HasHWVP9";
        static constexpr char signature[] =
                "()Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto HasHWVP9() -> bool;

    struct FindDecoderCodecInfoForMimeType_t {
        typedef HardwareCodecCapabilityUtils Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "findDecoderCodecInfoForMimeType";
        static constexpr char signature[] =
                "(Ljava/lang/String;)Z";
        static const bool isStatic = true;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::ANY;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto FindDecoderCodecInfoForMimeType(mozilla::jni::String::Param) -> bool;

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::ANY;

};

class NativeJSContainer : public mozilla::jni::ObjectBase<NativeJSContainer>
{
public:
    static const char name[];

    explicit NativeJSContainer(const Context& ctx) : ObjectBase<NativeJSContainer>(ctx) {}

    struct New_t {
        typedef NativeJSContainer Owner;
        typedef NativeJSContainer::LocalRef ReturnType;
        typedef NativeJSContainer::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New() -> NativeJSContainer::LocalRef;

    struct Clone2_t {
        typedef NativeJSContainer Owner;
        typedef NativeJSContainer::LocalRef ReturnType;
        typedef NativeJSContainer::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "clone";
        static constexpr char signature[] =
                "()Lorg/mozilla/gecko/util/NativeJSContainer;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct DisposeNative_t {
        typedef NativeJSContainer Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "disposeNative";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::GECKO;

    template<class Impl> class Natives;
};

class NativeJSObject : public mozilla::jni::ObjectBase<NativeJSObject>
{
public:
    static const char name[];

    explicit NativeJSObject(const Context& ctx) : ObjectBase<NativeJSObject>(ctx) {}

    struct New_t {
        typedef NativeJSObject Owner;
        typedef NativeJSObject::LocalRef ReturnType;
        typedef NativeJSObject::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "<init>";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static auto New() -> NativeJSObject::LocalRef;

    struct DisposeNative_t {
        typedef NativeJSObject Owner;
        typedef void ReturnType;
        typedef void SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "disposeNative";
        static constexpr char signature[] =
                "()V";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    auto DisposeNative() const -> void;

    struct GetBoolean_t {
        typedef NativeJSObject Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getBoolean";
        static constexpr char signature[] =
                "(Ljava/lang/String;)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct GetBooleanArray_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::BooleanArray::LocalRef ReturnType;
        typedef mozilla::jni::BooleanArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getBooleanArray";
        static constexpr char signature[] =
                "(Ljava/lang/String;)[Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct GetBundle_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getBundle";
        static constexpr char signature[] =
                "(Ljava/lang/String;)Landroid/os/Bundle;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct GetBundleArray_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
        typedef mozilla::jni::ObjectArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getBundleArray";
        static constexpr char signature[] =
                "(Ljava/lang/String;)[Landroid/os/Bundle;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct GetDouble_t {
        typedef NativeJSObject Owner;
        typedef double ReturnType;
        typedef double SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getDouble";
        static constexpr char signature[] =
                "(Ljava/lang/String;)D";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct GetDoubleArray_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::DoubleArray::LocalRef ReturnType;
        typedef mozilla::jni::DoubleArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getDoubleArray";
        static constexpr char signature[] =
                "(Ljava/lang/String;)[D";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct GetInt_t {
        typedef NativeJSObject Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getInt";
        static constexpr char signature[] =
                "(Ljava/lang/String;)I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct GetIntArray_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::IntArray::LocalRef ReturnType;
        typedef mozilla::jni::IntArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getIntArray";
        static constexpr char signature[] =
                "(Ljava/lang/String;)[I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct GetObject_t {
        typedef NativeJSObject Owner;
        typedef NativeJSObject::LocalRef ReturnType;
        typedef NativeJSObject::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getObject";
        static constexpr char signature[] =
                "(Ljava/lang/String;)Lorg/mozilla/gecko/util/NativeJSObject;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct GetObjectArray_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
        typedef mozilla::jni::ObjectArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getObjectArray";
        static constexpr char signature[] =
                "(Ljava/lang/String;)[Lorg/mozilla/gecko/util/NativeJSObject;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct GetString_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::String::LocalRef ReturnType;
        typedef mozilla::jni::String::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getString";
        static constexpr char signature[] =
                "(Ljava/lang/String;)Ljava/lang/String;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct GetStringArray_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
        typedef mozilla::jni::ObjectArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "getStringArray";
        static constexpr char signature[] =
                "(Ljava/lang/String;)[Ljava/lang/String;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct Has_t {
        typedef NativeJSObject Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "has";
        static constexpr char signature[] =
                "(Ljava/lang/String;)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OptBoolean_t {
        typedef NativeJSObject Owner;
        typedef bool ReturnType;
        typedef bool SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                bool> Args;
        static constexpr char name[] = "optBoolean";
        static constexpr char signature[] =
                "(Ljava/lang/String;Z)Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OptBooleanArray_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::BooleanArray::LocalRef ReturnType;
        typedef mozilla::jni::BooleanArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::BooleanArray::Param> Args;
        static constexpr char name[] = "optBooleanArray";
        static constexpr char signature[] =
                "(Ljava/lang/String;[Z)[Z";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OptBundle_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::Object::Param> Args;
        static constexpr char name[] = "optBundle";
        static constexpr char signature[] =
                "(Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OptBundleArray_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
        typedef mozilla::jni::ObjectArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::ObjectArray::Param> Args;
        static constexpr char name[] = "optBundleArray";
        static constexpr char signature[] =
                "(Ljava/lang/String;[Landroid/os/Bundle;)[Landroid/os/Bundle;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OptDouble_t {
        typedef NativeJSObject Owner;
        typedef double ReturnType;
        typedef double SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                double> Args;
        static constexpr char name[] = "optDouble";
        static constexpr char signature[] =
                "(Ljava/lang/String;D)D";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OptDoubleArray_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::DoubleArray::LocalRef ReturnType;
        typedef mozilla::jni::DoubleArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::DoubleArray::Param> Args;
        static constexpr char name[] = "optDoubleArray";
        static constexpr char signature[] =
                "(Ljava/lang/String;[D)[D";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OptInt_t {
        typedef NativeJSObject Owner;
        typedef int32_t ReturnType;
        typedef int32_t SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                int32_t> Args;
        static constexpr char name[] = "optInt";
        static constexpr char signature[] =
                "(Ljava/lang/String;I)I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OptIntArray_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::IntArray::LocalRef ReturnType;
        typedef mozilla::jni::IntArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::IntArray::Param> Args;
        static constexpr char name[] = "optIntArray";
        static constexpr char signature[] =
                "(Ljava/lang/String;[I)[I";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OptObject_t {
        typedef NativeJSObject Owner;
        typedef NativeJSObject::LocalRef ReturnType;
        typedef NativeJSObject::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                NativeJSObject::Param> Args;
        static constexpr char name[] = "optObject";
        static constexpr char signature[] =
                "(Ljava/lang/String;Lorg/mozilla/gecko/util/NativeJSObject;)Lorg/mozilla/gecko/util/NativeJSObject;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OptObjectArray_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
        typedef mozilla::jni::ObjectArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::ObjectArray::Param> Args;
        static constexpr char name[] = "optObjectArray";
        static constexpr char signature[] =
                "(Ljava/lang/String;[Lorg/mozilla/gecko/util/NativeJSObject;)[Lorg/mozilla/gecko/util/NativeJSObject;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OptString_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::String::LocalRef ReturnType;
        typedef mozilla::jni::String::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::String::Param> Args;
        static constexpr char name[] = "optString";
        static constexpr char signature[] =
                "(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct OptStringArray_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::ObjectArray::LocalRef ReturnType;
        typedef mozilla::jni::ObjectArray::Param SetterType;
        typedef mozilla::jni::Args<
                mozilla::jni::String::Param,
                mozilla::jni::ObjectArray::Param> Args;
        static constexpr char name[] = "optStringArray";
        static constexpr char signature[] =
                "(Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct ToBundle_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::Object::LocalRef ReturnType;
        typedef mozilla::jni::Object::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "toBundle";
        static constexpr char signature[] =
                "()Landroid/os/Bundle;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    struct ToString_t {
        typedef NativeJSObject Owner;
        typedef mozilla::jni::String::LocalRef ReturnType;
        typedef mozilla::jni::String::Param SetterType;
        typedef mozilla::jni::Args<> Args;
        static constexpr char name[] = "toString";
        static constexpr char signature[] =
                "()Ljava/lang/String;";
        static const bool isStatic = false;
        static const mozilla::jni::ExceptionMode exceptionMode =
                mozilla::jni::ExceptionMode::ABORT;
        static const mozilla::jni::CallingThread callingThread =
                mozilla::jni::CallingThread::GECKO;
        static const mozilla::jni::DispatchTarget dispatchTarget =
                mozilla::jni::DispatchTarget::CURRENT;
    };

    static const mozilla::jni::CallingThread callingThread =
            mozilla::jni::CallingThread::GECKO;

    template<class Impl> class Natives;
};

} /* java */
} /* mozilla */
#endif // GeneratedJNIWrappers_h