static jobject JNICALL JniAsList(JNIEnv* env, jclass clazz, jlong ptr)
{
    try
    {
        AdblockPlus::JsValueList list = JniGetJsValue(ptr)->AsList();

        return JniJsValueListToArrayList(env, list);
    }
    CATCH_THROW_AND_RETURN(env, 0)
}
void JniEventCallback::Callback(AdblockPlus::JsValueList& params)
{
  JNIEnvAcquire env(GetJavaVM());

  jclass clazz = env->GetObjectClass(GetCallbackObject());
  jmethodID method = env->GetMethodID(clazz, "eventCallback", "(Ljava/util/List;)V");

  if (method)
  {
    jobject jsList = JniJsValueListToArrayList(*env, params);
    env->CallVoidMethod(GetCallbackObject(), method, jsList);
  }
}
void JniEventCallback::Callback(AdblockPlus::JsValueList&& params)
{
  JNIEnvAcquire env(GetJavaVM());

  jmethodID method = env->GetMethodID(
      *JniLocalReference<jclass>(*env,
          env->GetObjectClass(GetCallbackObject())),
      "eventCallback", "(Ljava/util/List;)V");

  if (method)
  {
    jobject jsList = JniJsValueListToArrayList(*env, std::move(params));
    env->CallVoidMethod(GetCallbackObject(), method, jsList);
  }
}