static void JNICALL JniTriggerEvent(JNIEnv* env, jclass clazz, jlong ptr, jstring jEventName, jarray jJsPtrs)
{
  AdblockPlus::JsEnginePtr& engine = *JniLongToTypePtr<AdblockPlus::JsEnginePtr>(ptr);
  std::string eventName = JniJavaToStdString(env, jEventName);
  AdblockPlus::JsValueList args;

  if (jJsPtrs)
  {
    jlong* ptrs = (jlong*)env->GetPrimitiveArrayCritical(jJsPtrs, 0);

    jsize length = env->GetArrayLength(jJsPtrs);

    for (jsize i = 0; i < length; i++)
    {
      args.push_back(JniGetJsValuePtr(ptrs[i]));
    }

    env->ReleasePrimitiveArrayCritical(jJsPtrs, ptrs, JNI_ABORT);
  }

  try
  {
    engine->TriggerEvent(eventName, args);
  }
  CATCH_AND_THROW(env)
}
static jlong JNICALL JniCtor(JNIEnv* env, jclass clazz, jlong jsValue)
{
  try
  {
    return JniPtrToLong(new AdblockPlus::FilterPtr(new AdblockPlus::Filter(JniGetJsValuePtr(jsValue))));
  }
  CATCH_THROW_AND_RETURN(env, 0)
}